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

lang_output_section_statement_type *
gld_i386pe_place_orphan(asection *s,char *secname,int constraint)

{
  uint uVar1;
  char *__s;
  lang_statement_union *plVar2;
  lang_statement_union *plVar3;
  lang_output_section_statement_type *plVar4;
  asection *paVar5;
  etree_type *peVar6;
  char *pcVar7;
  int iVar8;
  lang_statement_union *plVar9;
  bfd *pbVar10;
  size_t __n;
  uint uVar11;
  orphan_save *poVar12;
  byte *pbVar13;
  lang_output_section_statement_type *output;
  byte *pbVar14;
  bool bVar15;
  bool bVar16;
  byte bVar17;
  char *local_40;
  lang_output_section_statement_type *local_3c;
  byte *local_38;
  lang_statement_list_type add_child;
  
  bVar17 = 0;
  if ((link_info._0_1_ & 3) == 2) {
    local_40 = (char *)0x0;
    local_38 = (byte *)secname;
  }
  else {
    local_40 = strchr(secname,0x24);
    local_38 = (byte *)secname;
    if (local_40 != (char *)0x0) {
      __n = (int)local_40 - (int)secname;
      local_38 = (byte *)xmalloc(__n + 1);
      memcpy(local_38,secname,__n);
      local_38[__n] = 0;
    }
  }
  lang_list_init(&add_child);
  if ((constraint == 0) &&
     (local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),
     local_3c != (lang_output_section_statement_type *)0x0)) {
    plVar4 = (lang_output_section_statement_type *)0x0;
    do {
      output = local_3c;
      if ((local_3c->bfd_section != (asection *)0x0) &&
         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||
          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {
        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);
        goto LAB_00055848;
      }
      local_3c = next_matching_output_section_statement(local_3c,0);
      plVar4 = output;
    } while (local_3c != (lang_output_section_statement_type *)0x0);
    if (output != (lang_output_section_statement_type *)0x0) {
      lang_add_section(&output->children,s,(flag_info *)0x0,output);
      return output;
    }
    constraint = 0x17e;
  }
  if (gld_i386pe_place_orphan::lexical_block_10::orphan_init_done == 0) {
    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;
    do {
      if (poVar12->name != (char *)0x0) {
        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);
        poVar12->os = plVar4;
        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {
          plVar4->flags = poVar12->flags;
        }
      }
      poVar12 = poVar12 + 1;
    } while (poVar12 != (orphan_save *)&DAT_001d0018);
    gld_i386pe_place_orphan::lexical_block_10::orphan_init_done = 1;
  }
  uVar11 = s->flags;
  if ((link_info._0_1_ & 3) != 2) {
    pbVar10 = s->owner;
    paVar5 = s;
    while (paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),
          paVar5 != (asection *)0x0) {
      pbVar10 = paVar5->owner;
      if ((((paVar5->output_section == (bfd_section *)0x0) &&
           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&
          ((pbVar10->field_0x29 & 8) == 0)) &&
         ((pbVar10->usrdata != (void *)0x0 &&
          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {
        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;
      }
    }
  }
  if ((uVar11 & 1) == 0) {
    poVar12 = (orphan_save *)0x0;
    plVar9 = (lang_statement_union *)0x0;
  }
  else {
    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 4;
    if (((uVar11 & 0x102) != 0) &&
       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)) {
      bVar15 = false;
      bVar16 = (uVar11 & 0x10) == 0;
      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;
      if (bVar16) {
        iVar8 = 7;
        pbVar13 = local_38;
        pbVar14 = (byte *)".idata$";
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar15 = *pbVar13 < *pbVar14;
          bVar16 = *pbVar13 == *pbVar14;
          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;
        } while (bVar16);
        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;
        if ((!bVar15 && !bVar16) != bVar15) {
          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;
        }
      }
    }
    plVar9 = (lang_statement_union *)poVar12->os;
    if ((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0) {
      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);
      poVar12->os = (lang_output_section_statement_type *)plVar9;
      if ((plVar9 == (lang_statement_union *)0x0) &&
         (plVar9 = (lang_statement_union *)
                   lang_output_section_find_by_flags
                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),
         plVar9 == (lang_statement_union *)0x0)) {
        plVar9 = lang_output_section_statement.head;
      }
    }
  }
  peVar6 = exp_nameop(0x103,"__section_alignment__");
  peVar6 = exp_unop(0x117,peVar6);
  local_3c = lang_insert_orphan(s,(char *)local_38,constraint,&plVar9->output_section_statement,
                                poVar12,peVar6,&add_child);
  if ((link_info._0_1_ & 3) == 2) {
    uVar11 = s->alignment_power;
    local_3c->section_alignment = uVar11;
    local_3c->bfd_section->alignment_power = uVar11;
  }
LAB_00055848:
  plVar3 = (local_3c->children).head;
  plVar9 = (lang_statement_union *)&local_3c->children;
  while (plVar2 = plVar3, plVar2 != (lang_statement_union *)0x0) {
    if ((plVar2->header).type == lang_input_section_enum) {
      __s = ((plVar2->input_section).section)->name;
      pcVar7 = strchr(__s,0x24);
      if ((pcVar7 != (char *)0x0) &&
         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;
    }
    plVar9 = plVar2;
    plVar3 = (plVar2->header).next;
  }
  if (add_child.head != (lang_statement_union *)0x0) {
    *add_child.tail = plVar2;
    (plVar9->header).next = add_child.head;
  }
  return local_3c;
}



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

int FUN_00055650(int param_1,byte *param_2,int param_3)

{
  uint uVar1;
  char *__s;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  undefined *puVar5;
  int iVar6;
  undefined4 uVar7;
  char *pcVar8;
  int iVar9;
  size_t __n;
  uint uVar10;
  undefined **ppuVar11;
  byte *pbVar12;
  byte *pbVar13;
  bool bVar14;
  bool bVar15;
  byte bVar16;
  char *local_40;
  int local_3c;
  byte *local_38;
  int local_24;
  undefined4 *local_20;
  undefined4 uStack_14;
  
  bVar16 = 0;
  uStack_14 = 0x55659;
  if ((DAT_001d13e0 & 3) == 2) {
    local_40 = (char *)0x0;
    local_38 = param_2;
  }
  else {
    local_40 = strchr((char *)param_2,0x24);
    local_38 = param_2;
    if (local_40 != (char *)0x0) {
      __n = (int)local_40 - (int)param_2;
      local_38 = (byte *)xmalloc(__n + 1);
      memcpy(local_38,param_2,__n);
      local_38[__n] = 0;
    }
  }
  FUN_00023e00(&local_24);
  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {
    iVar9 = 0;
    do {
      iVar6 = local_3c;
      if ((*(int *)(local_3c + 0x1c) != 0) &&
         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||
          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {
        FUN_00026550(&local_24,param_1,0,local_3c);
        goto LAB_00055848;
      }
      local_3c = FUN_00025b20(local_3c,0);
      iVar9 = iVar6;
    } while (local_3c != 0);
    if (iVar6 != 0) {
      FUN_00026550(iVar6 + 8,param_1,0,iVar6);
      return iVar6;
    }
    param_3 = 0x17e;
  }
  if (DAT_001d0f88 == 0) {
    ppuVar11 = &PTR_s__text_001cffa0;
    do {
      if (*ppuVar11 != (undefined *)0x0) {
        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);
        ppuVar11[2] = puVar5;
        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {
          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];
        }
      }
      ppuVar11 = ppuVar11 + 6;
    } while (ppuVar11 != (undefined **)&DAT_001d0018);
    DAT_001d0f88 = 1;
  }
  uVar10 = *(uint *)(param_1 + 0x14);
  if ((DAT_001d13e0 & 3) != 2) {
    iVar9 = *(int *)(param_1 + 0xac);
    iVar6 = param_1;
    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {
      iVar9 = *(int *)(iVar6 + 0xac);
      if ((((*(int *)(iVar6 + 0x54) == 0) &&
           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))
          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&
         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))
         ) {
        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;
      }
    }
  }
  if ((uVar10 & 1) == 0) {
    ppuVar11 = (undefined **)0x0;
    puVar5 = (undefined *)0x0;
  }
  else {
    ppuVar11 = &PTR_s__bss_001d0000;
    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {
      bVar14 = false;
      bVar15 = (uVar10 & 0x10) == 0;
      ppuVar11 = &PTR_s__text_001cffa0;
      if (bVar15) {
        iVar9 = 7;
        pbVar12 = local_38;
        pbVar13 = (byte *)".idata$";
        do {
          if (iVar9 == 0) break;
          iVar9 = iVar9 + -1;
          bVar14 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        ppuVar11 = &PTR_s__idata_001cffb8;
        if ((!bVar14 && !bVar15) != bVar14) {
          ppuVar11 = &PTR_s__rdata_001cffd0;
        }
      }
    }
    puVar5 = ppuVar11[2];
    if (ppuVar11[2] == (undefined *)0x0) {
      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);
      ppuVar11[2] = puVar5;
      if ((puVar5 == (undefined *)0x0) &&
         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),
         puVar5 == (undefined *)0x0)) {
        puVar5 = DAT_001d13a0;
      }
    }
  }
  uVar7 = FUN_00032c60(0x103,"__section_alignment__");
  uVar7 = FUN_00032be0(0x117,uVar7);
  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);
  if ((DAT_001d13e0 & 3) == 2) {
    uVar7 = *(undefined4 *)(param_1 + 0x58);
    *(undefined4 *)(local_3c + 0x44) = uVar7;
    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;
  }
LAB_00055848:
  piVar4 = *(int **)(local_3c + 8);
  piVar3 = (int *)(local_3c + 8);
  while (piVar2 = piVar4, piVar2 != (int *)0x0) {
    if (piVar2[1] == 5) {
      __s = *(char **)piVar2[2];
      pcVar8 = strchr(__s,0x24);
      if ((pcVar8 != (char *)0x0) &&
         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;
    }
    piVar3 = piVar2;
    piVar4 = (int *)*piVar2;
  }
  if (local_24 != 0) {
    *local_20 = piVar2;
    *piVar3 = local_24;
  }
  return local_3c;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00017b80
ADD EBX,0x1799a7
SUB ESP,0x3c
LEA EAX,[EBX + 0x23e0]
MOV dword ptr [ESP + 0x18],EAX
MOVZX EAX,byte ptr [EAX]
MOV byte ptr [ESP + 0xc],AL
AND EAX,0x3
CMP AL,0x2
JZ 0x000558c8
SUB ESP,0x8
PUSH 0x24
PUSH dword ptr [ESP + 0x60]
CALL 0x00016730
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x14],ECX
TEST EAX,EAX
JZ 0x000556ca
MOV ESI,EAX
SUB ESP,0xc
SUB ESI,ECX
LEA EAX,[ESI + 0x1]
PUSH EAX
CALL 0x00016dc8
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0xc
MOV EDI,EAX
PUSH ESI
PUSH dword ptr [ESP + 0x5c]
PUSH EAX
CALL 0x00016210
MOV byte ptr [EDI + ESI*0x1],0x0
ADD ESP,0x10
SUB ESP,0xc
LEA EAX,[ESP + 0x34]
MOV dword ptr [ESP + 0x28],EAX
PUSH EAX
CALL 0x00023e00
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x58]
TEST EAX,EAX
JZ 0x000558e0
MOV EAX,dword ptr [EBX + 0x1f88]
TEST EAX,EAX
JNZ 0x00055741
LEA EDI,[EBX + 0xfa0]
LEA ESI,[EBX + 0x1018]
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x00055730
SUB ESP,0x4
PUSH 0x0
PUSH 0x0
PUSH EAX
CALL 0x000256d0
ADD ESP,0x10
MOV dword ptr [EDI + 0x8],EAX
TEST EAX,EAX
JZ 0x00055730
MOV EBP,dword ptr [EAX + 0x4c]
TEST EBP,EBP
JNZ 0x00055730
MOV EDX,dword ptr [EDI + 0x4]
MOV dword ptr [EAX + 0x4c],EDX
LEA ESI,[ESI]
ADD EDI,0x18
CMP EDI,ESI
JNZ 0x00055700
MOV dword ptr [EBX + 0x1f88],0x1
MOV EAX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [EAX + 0x14]
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x18]
MOVZX EAX,byte ptr [EAX]
MOV byte ptr [ESP + 0x10],AL
AND EAX,0x3
CMP AL,0x2
JZ 0x000557d0
MOV EAX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [EAX + 0xac]
LEA ESI,[ESI]
LEA ESI,[ESI]
SUB ESP,0x8
PUSH EAX
PUSH EDX
CALL 0x00016800
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000557d0
MOV ECX,dword ptr [EAX + 0x54]
MOV EDX,dword ptr [EAX + 0xac]
TEST ECX,ECX
JNZ 0x00055770
MOV ESI,dword ptr [EAX + 0x14]
MOV ECX,EBP
XOR ECX,ESI
MOV EDI,ESI
AND ECX,0x3
AND EDI,0x8000
OR ECX,EDI
JNZ 0x00055770
TEST byte ptr [EDX + 0x29],0x8
JNZ 0x00055770
MOV ECX,dword ptr [EDX + 0xa4]
TEST ECX,ECX
JZ 0x00055770
TEST byte ptr [ECX + 0x24],0x10
JNZ 0x00055770
MOV ECX,EBP
XOR ESI,0x8
XOR ECX,0x8
OR ESI,ECX
XOR ESI,0x8
MOV EBP,ESI
JMP 0x00055770
MOV EAX,EBP
TEST AL,0x1
JNZ 0x00055940
XOR ESI,ESI
XOR EDI,EDI
SUB ESP,0x8
LEA EAX,[EBX + 0xfffc4c19]
PUSH EAX
PUSH 0x103
CALL 0x00032c60
POP ECX
POP EBP
PUSH EAX
PUSH 0x117
CALL 0x00032be0
ADD ESP,0xc
PUSH dword ptr [ESP + 0x20]
PUSH EAX
PUSH ESI
PUSH EDI
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x6c]
CALL 0x00029730
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x20
MOVZX EAX,byte ptr [EAX]
AND EAX,0x3
CMP AL,0x2
JNZ 0x00055848
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ECX + 0x1c]
MOV EAX,dword ptr [EAX + 0x58]
MOV dword ptr [ECX + 0x44],EAX
MOV dword ptr [EDX + 0x58],EAX
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x10]
MOV EDI,dword ptr [EAX + 0x8]
LEA ESI,[EAX + 0x8]
TEST EDI,EDI
JZ 0x000558a1
LEA ESI,[ESI]
LEA ESI,[ESI]
CMP dword ptr [EDI + 0x4],0x5
JNZ 0x00055899
MOV EAX,dword ptr [EDI + 0x8]
SUB ESP,0x8
MOV EBP,dword ptr [EAX]
PUSH 0x24
PUSH EBP
CALL 0x00016730
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00055899
MOV EDX,dword ptr [ESP + 0xc]
TEST EDX,EDX
JZ 0x000558a1
SUB ESP,0x8
PUSH EBP
PUSH dword ptr [ESP + 0x60]
CALL 0x000160c0
ADD ESP,0x10
TEST EAX,EAX
JS 0x000558a1
MOV ESI,EDI
MOV EDI,dword ptr [EDI]
TEST EDI,EDI
JNZ 0x00055860
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x000558b5
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [ESP + 0x10]
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0xc],0x0
MOV dword ptr [ESP + 0x14],EAX
JMP 0x000556ca
SUB ESP,0x4
PUSH 0x0
PUSH 0x0
PUSH dword ptr [ESP + 0x20]
CALL 0x000256d0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000556ea
XOR EDI,EDI
MOV ESI,dword ptr [ESP + 0x50]
JMP 0x00055935
MOV EDX,dword ptr [EDX + 0x14]
TEST EDX,EDX
JZ 0x000559e0
XOR EDX,dword ptr [ESI + 0x14]
AND EDX,0x3
JZ 0x000559e0
SUB ESP,0x8
PUSH 0x0
PUSH EAX
CALL 0x00025b20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000559fc
MOV EDX,dword ptr [EAX + 0x1c]
TEST EDX,EDX
JNZ 0x00055908
MOV EDI,EAX
JMP 0x0005591f
LEA ESI,[EBX + 0x1000]
TEST EAX,0x102
JZ 0x00055988
LEA ESI,[EBX + 0xfe8]
TEST AL,0x8
JZ 0x00055988
LEA ESI,[EBX + 0xfa0]
TEST AL,0x10
JNZ 0x00055988
MOV ESI,dword ptr [ESP + 0x14]
MOV ECX,0x7
LEA EDI,[EBX + 0xfffc4c11]
CMPSB.REPE ES:EDI,ESI
LEA ESI,[EBX + 0xfb8]
SETA AL
SBB AL,0x0
TEST AL,AL
LEA EAX,[EBX + 0xfd0]
CMOVNZ ESI,EAX
MOV EDI,dword ptr [ESI + 0x8]
TEST EDI,EDI
JNZ 0x000557de
SUB ESP,0x4
PUSH 0x0
PUSH 0x0
PUSH dword ptr [ESI]
CALL 0x000256d0
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [ESI + 0x8],EAX
TEST EAX,EAX
JNZ 0x000557de
LEA EAX,[ESI + 0x8]
PUSH 0x0
PUSH EAX
PUSH EBP
PUSH dword ptr [ESP + 0x5c]
CALL 0x00025ba0
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x000557de
LEA EAX,[EBX + 0x23a0]
MOV EDI,dword ptr [EAX]
JMP 0x000557de
PUSH EAX
MOV dword ptr [ESP + 0x14],EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [ESP + 0x28]
CALL 0x00026550
ADD ESP,0x10
JMP 0x00055848
MOV dword ptr [ESP + 0x10],EDI
TEST EDI,EDI
JZ 0x00055a27
MOV EAX,dword ptr [ESP + 0x10]
PUSH EAX
ADD EAX,0x8
PUSH 0x0
PUSH dword ptr [ESP + 0x58]
PUSH EAX
CALL 0x00026550
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x58],0x17e
JMP 0x000556ea
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_00055650(int param_1,byte *param_2,int param_3)\n\n{\n  uint uVar1;\n  char *__s;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  int iVar9;\n  size_t __n;\n  uint uVar10;\n  undefined **ppuVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  char *local_40;\n  int local_3c;\n  byte *local_38;\n  int local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x55659;\n  if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }\n  FUN_00023e00(&local_24);\n  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }\n  if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }\n  uVar10 = *(uint *)(param_1 + 0x14);\n  if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }\n  uVar7 = FUN_00032c60(0x103,"__section_alignment__");\n  uVar7 = FUN_00032be0(0x117,uVar7);\n  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);\n  if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }\nLAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);\n  piVar3 = (int *)(local_3c + 8);\n  while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }\n  if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }\n  return local_3c;\n}\n\n" comment (function_definition "int FUN_00055650(int param_1,byte *param_2,int param_3)\n\n{\n  uint uVar1;\n  char *__s;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  int iVar9;\n  size_t __n;\n  uint uVar10;\n  undefined **ppuVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  char *local_40;\n  int local_3c;\n  byte *local_38;\n  int local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x55659;\n  if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }\n  FUN_00023e00(&local_24);\n  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }\n  if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }\n  uVar10 = *(uint *)(param_1 + 0x14);\n  if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }\n  uVar7 = FUN_00032c60(0x103,"__section_alignment__");\n  uVar7 = FUN_00032be0(0x117,uVar7);\n  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);\n  if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }\nLAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);\n  piVar3 = (int *)(local_3c + 8);\n  while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }\n  if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }\n  return local_3c;\n}" primitive_type (function_declarator "FUN_00055650(int param_1,byte *param_2,int param_3)" identifier (parameter_list "(int param_1,byte *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  char *__s;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  int iVar9;\n  size_t __n;\n  uint uVar10;\n  undefined **ppuVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  char *local_40;\n  int local_3c;\n  byte *local_38;\n  int local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x55659;\n  if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }\n  FUN_00023e00(&local_24);\n  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }\n  if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }\n  uVar10 = *(uint *)(param_1 + 0x14);\n  if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }\n  uVar7 = FUN_00032c60(0x103,"__section_alignment__");\n  uVar7 = FUN_00032be0(0x117,uVar7);\n  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);\n  if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }\nLAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);\n  piVar3 = (int *)(local_3c + 8);\n  while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }\n  if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }\n  return local_3c;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined **ppuVar11;" type_identifier (pointer_declarator "**ppuVar11" * (pointer_declarator "*ppuVar11" * identifier)) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "char *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "byte *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x55659;" (assignment_expression "uStack_14 = 0x55659" identifier = number_literal) ;) (if_statement "if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" if (parenthesized_expression "((DAT_001d13e0 & 3) == 2)" ( (binary_expression "(DAT_001d13e0 & 3) == 2" (parenthesized_expression "(DAT_001d13e0 & 3)" ( (binary_expression "DAT_001d13e0 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }" { (expression_statement "local_40 = (char *)0x0;" (assignment_expression "local_40 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" identifier = identifier) ;) }) (else_clause "else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" else (compound_statement "{\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" { (expression_statement "local_40 = strchr((char *)param_2,0x24);" (assignment_expression "local_40 = strchr((char *)param_2,0x24)" identifier = (call_expression "strchr((char *)param_2,0x24)" identifier (argument_list "((char *)param_2,0x24)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" identifier = identifier) ;) (if_statement "if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }" if (parenthesized_expression "(local_40 != (char *)0x0)" ( (binary_expression "local_40 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }" { (expression_statement "__n = (int)local_40 - (int)param_2;" (assignment_expression "__n = (int)local_40 - (int)param_2" identifier = (binary_expression "(int)local_40 - (int)param_2" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_38 = (byte *)xmalloc(__n + 1);" (assignment_expression "local_38 = (byte *)xmalloc(__n + 1)" identifier = (cast_expression "(byte *)xmalloc(__n + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(local_38,param_2,__n);" (call_expression "memcpy(local_38,param_2,__n)" identifier (argument_list "(local_38,param_2,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_38[__n] = 0;" (assignment_expression "local_38[__n] = 0" (subscript_expression "local_38[__n]" identifier [ identifier ]) = number_literal) ;) })) }))) (expression_statement "FUN_00023e00(&local_24);" (call_expression "FUN_00023e00(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) ))) ;) (if_statement "if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }" if (parenthesized_expression "((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0))" ( (binary_expression "(param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)" ( (comma_expression "local_3c = FUN_000256d0(local_38,0,0), local_3c != 0" (assignment_expression "local_3c = FUN_000256d0(local_38,0,0)" identifier = (call_expression "FUN_000256d0(local_38,0,0)" identifier (argument_list "(local_38,0,0)" ( identifier , number_literal , number_literal )))) , (binary_expression "local_3c != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);" do (compound_statement "{\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    }" { (expression_statement "iVar6 = local_3c;" (assignment_expression "iVar6 = local_3c" identifier = identifier) ;) (if_statement "if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }" if (parenthesized_expression "((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0))))" ( (binary_expression "(*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))" (parenthesized_expression "(*(int *)(local_3c + 0x1c) != 0)" ( (binary_expression "*(int *)(local_3c + 0x1c) != 0" (pointer_expression "*(int *)(local_3c + 0x1c)" * (cast_expression "(int *)(local_3c + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 0x1c)" ( (binary_expression "local_3c + 0x1c" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))" ( (parenthesized_expression "(uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0))" ( (comma_expression "uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" (assignment_expression "uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" identifier = (pointer_expression "*(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" * (cast_expression "(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_3c + 0x1c) + 0x14)" ( (binary_expression "*(int *)(local_3c + 0x1c) + 0x14" (pointer_expression "*(int *)(local_3c + 0x1c)" * (cast_expression "(int *)(local_3c + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 0x1c)" ( (binary_expression "local_3c + 0x1c" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" (binary_expression "uVar10 == 0" identifier == number_literal) || (parenthesized_expression "(iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" ( (comma_expression "iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0" (assignment_expression "iVar6 = iVar9" identifier = identifier) , (binary_expression "((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0" (parenthesized_expression "((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3)" ( (binary_expression "(uVar10 ^ *(uint *)(param_1 + 0x14)) & 3" (parenthesized_expression "(uVar10 ^ *(uint *)(param_1 + 0x14))" ( (binary_expression "uVar10 ^ *(uint *)(param_1 + 0x14)" identifier ^ (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) & number_literal) )) == number_literal)) )))) )) ))) )) (compound_statement "{\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }" { (expression_statement "FUN_00026550(&local_24,param_1,0,local_3c);" (call_expression "FUN_00026550(&local_24,param_1,0,local_3c)" identifier (argument_list "(&local_24,param_1,0,local_3c)" ( (pointer_expression "&local_24" & identifier) , identifier , number_literal , identifier ))) ;) (goto_statement "goto LAB_00055848;" goto statement_identifier ;) })) (expression_statement "local_3c = FUN_00025b20(local_3c,0);" (assignment_expression "local_3c = FUN_00025b20(local_3c,0)" identifier = (call_expression "FUN_00025b20(local_3c,0)" identifier (argument_list "(local_3c,0)" ( identifier , number_literal )))) ;) (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) ;) (if_statement "if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }" { (expression_statement "FUN_00026550(iVar6 + 8,param_1,0,iVar6);" (call_expression "FUN_00026550(iVar6 + 8,param_1,0,iVar6)" identifier (argument_list "(iVar6 + 8,param_1,0,iVar6)" ( (binary_expression "iVar6 + 8" identifier + number_literal) , identifier , number_literal , identifier ))) ;) (return_statement "return iVar6;" return identifier ;) })) (expression_statement "param_3 = 0x17e;" (assignment_expression "param_3 = 0x17e" identifier = number_literal) ;) })) (if_statement "if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }" if (parenthesized_expression "(DAT_001d0f88 == 0)" ( (binary_expression "DAT_001d0f88 == 0" identifier == number_literal) )) (compound_statement "{\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }" { (expression_statement "ppuVar11 = &PTR_s__text_001cffa0;" (assignment_expression "ppuVar11 = &PTR_s__text_001cffa0" identifier = (pointer_expression "&PTR_s__text_001cffa0" & identifier)) ;) (do_statement "do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);" do (compound_statement "{\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    }" { (if_statement "if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }" if (parenthesized_expression "(*ppuVar11 != (undefined *)0x0)" ( (binary_expression "*ppuVar11 != (undefined *)0x0" (pointer_expression "*ppuVar11" * identifier) != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }" { (expression_statement "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);" (assignment_expression "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0)" identifier = (cast_expression "(undefined *)FUN_000256d0(*ppuVar11,0,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000256d0(*ppuVar11,0,0)" identifier (argument_list "(*ppuVar11,0,0)" ( (pointer_expression "*ppuVar11" * identifier) , number_literal , number_literal ))))) ;) (expression_statement "ppuVar11[2] = puVar5;" (assignment_expression "ppuVar11[2] = puVar5" (subscript_expression "ppuVar11[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }" if (parenthesized_expression "((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0))" ( (binary_expression "(puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)" (parenthesized_expression "(puVar5 != (undefined *)0x0)" ( (binary_expression "puVar5 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(int *)(puVar5 + 0x4c) == 0)" ( (binary_expression "*(int *)(puVar5 + 0x4c) == 0" (pointer_expression "*(int *)(puVar5 + 0x4c)" * (cast_expression "(int *)(puVar5 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x4c)" ( (binary_expression "puVar5 + 0x4c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }" { (expression_statement "*(undefined **)(puVar5 + 0x4c) = ppuVar11[1];" (assignment_expression "*(undefined **)(puVar5 + 0x4c) = ppuVar11[1]" (pointer_expression "*(undefined **)(puVar5 + 0x4c)" * (cast_expression "(undefined **)(puVar5 + 0x4c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x4c)" ( (binary_expression "puVar5 + 0x4c" identifier + number_literal) )))) = (subscript_expression "ppuVar11[1]" identifier [ number_literal ])) ;) })) })) (expression_statement "ppuVar11 = ppuVar11 + 6;" (assignment_expression "ppuVar11 = ppuVar11 + 6" identifier = (binary_expression "ppuVar11 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(ppuVar11 != (undefined **)&DAT_001d0018)" ( (binary_expression "ppuVar11 != (undefined **)&DAT_001d0018" identifier != (cast_expression "(undefined **)&DAT_001d0018" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_001d0018" & identifier))) )) ;) (expression_statement "DAT_001d0f88 = 1;" (assignment_expression "DAT_001d0f88 = 1" identifier = number_literal) ;) })) (expression_statement "uVar10 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x14)" identifier = (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }" if (parenthesized_expression "((DAT_001d13e0 & 3) != 2)" ( (binary_expression "(DAT_001d13e0 & 3) != 2" (parenthesized_expression "(DAT_001d13e0 & 3)" ( (binary_expression "DAT_001d13e0 & 3" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }" { (expression_statement "iVar9 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar9 = *(int *)(param_1 + 0xac)" identifier = (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = param_1;" (assignment_expression "iVar6 = param_1" identifier = identifier) ;) (while_statement "while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }" while (parenthesized_expression "(iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0)" ( (comma_expression "iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0" (assignment_expression "iVar6 = bfd_get_next_section_by_name(iVar9,iVar6)" identifier = (call_expression "bfd_get_next_section_by_name(iVar9,iVar6)" identifier (argument_list "(iVar9,iVar6)" ( identifier , identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) )) (compound_statement "{\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }" { (expression_statement "iVar9 = *(int *)(iVar6 + 0xac);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0xac)" identifier = (pointer_expression "*(int *)(iVar6 + 0xac)" * (cast_expression "(int *)(iVar6 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xac)" ( (binary_expression "iVar6 + 0xac" identifier + number_literal) ))))) ;) (if_statement "if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }" if (parenthesized_expression "((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         )" ( (binary_expression "(((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))" (parenthesized_expression "(((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0))" ( (binary_expression "((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)" (parenthesized_expression "((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))" ( (binary_expression "(*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)" (parenthesized_expression "(*(int *)(iVar6 + 0x54) == 0)" ( (binary_expression "*(int *)(iVar6 + 0x54) == 0" (pointer_expression "*(int *)(iVar6 + 0x54)" * (cast_expression "(int *)(iVar6 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x54)" ( (binary_expression "iVar6 + 0x54" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)" ( (comma_expression "uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0" (assignment_expression "uVar1 = *(uint *)(iVar6 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) ))))) , (binary_expression "((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0" (binary_expression "((uVar10 ^ uVar1) & 3) == 0" (parenthesized_expression "((uVar10 ^ uVar1) & 3)" ( (binary_expression "(uVar10 ^ uVar1) & 3" (parenthesized_expression "(uVar10 ^ uVar1)" ( (binary_expression "uVar10 ^ uVar1" identifier ^ identifier) )) & number_literal) )) == number_literal) && (binary_expression "(uVar1 & 0x8000) == 0" (parenthesized_expression "(uVar1 & 0x8000)" ( (binary_expression "uVar1 & 0x8000" identifier & number_literal) )) == number_literal))) ))) )) && (parenthesized_expression "((*(byte *)(iVar9 + 0x29) & 8) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x29) & 8) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x29) & 8)" ( (binary_expression "*(byte *)(iVar9 + 0x29) & 8" (pointer_expression "*(byte *)(iVar9 + 0x29)" * (cast_expression "(byte *)(iVar9 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x29)" ( (binary_expression "iVar9 + 0x29" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))" ( (parenthesized_expression "(*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0))" ( (binary_expression "*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)" (binary_expression "*(int *)(iVar9 + 0xa4) != 0" (pointer_expression "*(int *)(iVar9 + 0xa4)" * (cast_expression "(int *)(iVar9 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xa4)" ( (binary_expression "iVar9 + 0xa4" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10)" ( (binary_expression "*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10" (pointer_expression "*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24)" * (cast_expression "(byte *)(*(int *)(iVar9 + 0xa4) + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0xa4) + 0x24)" ( (binary_expression "*(int *)(iVar9 + 0xa4) + 0x24" (pointer_expression "*(int *)(iVar9 + 0xa4)" * (cast_expression "(int *)(iVar9 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xa4)" ( (binary_expression "iVar9 + 0xa4" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }" { (expression_statement "uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;" (assignment_expression "uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8" identifier = (binary_expression "(uVar1 ^ 8 | uVar10 ^ 8) ^ 8" (parenthesized_expression "(uVar1 ^ 8 | uVar10 ^ 8)" ( (binary_expression "uVar1 ^ 8 | uVar10 ^ 8" (binary_expression "uVar1 ^ 8" identifier ^ number_literal) | (binary_expression "uVar10 ^ 8" identifier ^ number_literal)) )) ^ number_literal)) ;) })) })) })) (if_statement "if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" if (parenthesized_expression "((uVar10 & 1) == 0)" ( (binary_expression "(uVar10 & 1) == 0" (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }" { (expression_statement "ppuVar11 = (undefined **)0x0;" (assignment_expression "ppuVar11 = (undefined **)0x0" identifier = (cast_expression "(undefined **)0x0" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "puVar5 = (undefined *)0x0;" (assignment_expression "puVar5 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" else (compound_statement "{\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" { (expression_statement "ppuVar11 = &PTR_s__bss_001d0000;" (assignment_expression "ppuVar11 = &PTR_s__bss_001d0000" identifier = (pointer_expression "&PTR_s__bss_001d0000" & identifier)) ;) (if_statement "if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }" if (parenthesized_expression "(((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0))" ( (binary_expression "((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)" (parenthesized_expression "((uVar10 & 0x102) != 0)" ( (binary_expression "(uVar10 & 0x102) != 0" (parenthesized_expression "(uVar10 & 0x102)" ( (binary_expression "uVar10 & 0x102" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)" ( (comma_expression "ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0" (assignment_expression "ppuVar11 = &PTR_s__data_001cffe8" identifier = (pointer_expression "&PTR_s__data_001cffe8" & identifier)) , (binary_expression "(uVar10 & 8) != 0" (parenthesized_expression "(uVar10 & 8)" ( (binary_expression "uVar10 & 8" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }" { (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar15 = (uVar10 & 0x10) == 0;" (assignment_expression "bVar15 = (uVar10 & 0x10) == 0" identifier = (binary_expression "(uVar10 & 0x10) == 0" (parenthesized_expression "(uVar10 & 0x10)" ( (binary_expression "uVar10 & 0x10" identifier & number_literal) )) == number_literal)) ;) (expression_statement "ppuVar11 = &PTR_s__text_001cffa0;" (assignment_expression "ppuVar11 = &PTR_s__text_001cffa0" identifier = (pointer_expression "&PTR_s__text_001cffa0" & identifier)) ;) (if_statement "if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }" { (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = local_38;" (assignment_expression "pbVar12 = local_38" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".idata$";" (assignment_expression "pbVar13 = (byte *)".idata$"" identifier = (cast_expression "(byte *)".idata$"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".idata$"" " string_content "))) ;) (do_statement "do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar12 < *pbVar13;" (assignment_expression "bVar14 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "ppuVar11 = &PTR_s__idata_001cffb8;" (assignment_expression "ppuVar11 = &PTR_s__idata_001cffb8" identifier = (pointer_expression "&PTR_s__idata_001cffb8" & identifier)) ;) (if_statement "if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }" if (parenthesized_expression "((!bVar14 && !bVar15) != bVar14)" ( (binary_expression "(!bVar14 && !bVar15) != bVar14" (parenthesized_expression "(!bVar14 && !bVar15)" ( (binary_expression "!bVar14 && !bVar15" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (compound_statement "{\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }" { (expression_statement "ppuVar11 = &PTR_s__rdata_001cffd0;" (assignment_expression "ppuVar11 = &PTR_s__rdata_001cffd0" identifier = (pointer_expression "&PTR_s__rdata_001cffd0" & identifier)) ;) })) })) })) (expression_statement "puVar5 = ppuVar11[2];" (assignment_expression "puVar5 = ppuVar11[2]" identifier = (subscript_expression "ppuVar11[2]" identifier [ number_literal ])) ;) (if_statement "if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }" if (parenthesized_expression "(ppuVar11[2] == (undefined *)0x0)" ( (binary_expression "ppuVar11[2] == (undefined *)0x0" (subscript_expression "ppuVar11[2]" identifier [ number_literal ]) == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }" { (expression_statement "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);" (assignment_expression "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0)" identifier = (cast_expression "(undefined *)FUN_000256d0(*ppuVar11,0,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000256d0(*ppuVar11,0,0)" identifier (argument_list "(*ppuVar11,0,0)" ( (pointer_expression "*ppuVar11" * identifier) , number_literal , number_literal ))))) ;) (expression_statement "ppuVar11[2] = puVar5;" (assignment_expression "ppuVar11[2] = puVar5" (subscript_expression "ppuVar11[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }" if (parenthesized_expression "((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0))" ( (binary_expression "(puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)" (parenthesized_expression "(puVar5 == (undefined *)0x0)" ( (binary_expression "puVar5 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)" ( (comma_expression "puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0" (assignment_expression "puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" identifier = (cast_expression "(undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" identifier (argument_list "(param_1,uVar10,ppuVar11 + 2,0)" ( identifier , identifier , (binary_expression "ppuVar11 + 2" identifier + number_literal) , number_literal ))))) , (binary_expression "puVar5 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        puVar5 = DAT_001d13a0;\n      }" { (expression_statement "puVar5 = DAT_001d13a0;" (assignment_expression "puVar5 = DAT_001d13a0" identifier = identifier) ;) })) })) }))) (expression_statement "uVar7 = FUN_00032c60(0x103,"__section_alignment__");" (assignment_expression "uVar7 = FUN_00032c60(0x103,"__section_alignment__")" identifier = (call_expression "FUN_00032c60(0x103,"__section_alignment__")" identifier (argument_list "(0x103,"__section_alignment__")" ( number_literal , (string_literal ""__section_alignment__"" " string_content ") )))) ;) (expression_statement "uVar7 = FUN_00032be0(0x117,uVar7);" (assignment_expression "uVar7 = FUN_00032be0(0x117,uVar7)" identifier = (call_expression "FUN_00032be0(0x117,uVar7)" identifier (argument_list "(0x117,uVar7)" ( number_literal , identifier )))) ;) (expression_statement "local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);" (assignment_expression "local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" identifier = (call_expression "FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" identifier (argument_list "(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" ( identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }" if (parenthesized_expression "((DAT_001d13e0 & 3) == 2)" ( (binary_expression "(DAT_001d13e0 & 3) == 2" (parenthesized_expression "(DAT_001d13e0 & 3)" ( (binary_expression "DAT_001d13e0 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }" { (expression_statement "uVar7 = *(undefined4 *)(param_1 + 0x58);" (assignment_expression "uVar7 = *(undefined4 *)(param_1 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(local_3c + 0x44) = uVar7;" (assignment_expression "*(undefined4 *)(local_3c + 0x44) = uVar7" (pointer_expression "*(undefined4 *)(local_3c + 0x44)" * (cast_expression "(undefined4 *)(local_3c + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 0x44)" ( (binary_expression "local_3c + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;" (assignment_expression "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7" (pointer_expression "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58)" * (cast_expression "(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_3c + 0x1c) + 0x58)" ( (binary_expression "*(int *)(local_3c + 0x1c) + 0x58" (pointer_expression "*(int *)(local_3c + 0x1c)" * (cast_expression "(int *)(local_3c + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 0x1c)" ( (binary_expression "local_3c + 0x1c" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) })) (labeled_statement "LAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);" statement_identifier : (expression_statement "piVar4 = *(int **)(local_3c + 8);" (assignment_expression "piVar4 = *(int **)(local_3c + 8)" identifier = (pointer_expression "*(int **)(local_3c + 8)" * (cast_expression "(int **)(local_3c + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_3c + 8)" ( (binary_expression "local_3c + 8" identifier + number_literal) ))))) ;)) (expression_statement "piVar3 = (int *)(local_3c + 8);" (assignment_expression "piVar3 = (int *)(local_3c + 8)" identifier = (cast_expression "(int *)(local_3c + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 8)" ( (binary_expression "local_3c + 8" identifier + number_literal) )))) ;) (while_statement "while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }" while (parenthesized_expression "(piVar2 = piVar4, piVar2 != (int *)0x0)" ( (comma_expression "piVar2 = piVar4, piVar2 != (int *)0x0" (assignment_expression "piVar2 = piVar4" identifier = identifier) , (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }" { (if_statement "if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }" if (parenthesized_expression "(piVar2[1] == 5)" ( (binary_expression "piVar2[1] == 5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }" { (expression_statement "__s = *(char **)piVar2[2];" (assignment_expression "__s = *(char **)piVar2[2]" identifier = (pointer_expression "*(char **)piVar2[2]" * (cast_expression "(char **)piVar2[2]" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])))) ;) (expression_statement "pcVar8 = strchr(__s,0x24);" (assignment_expression "pcVar8 = strchr(__s,0x24)" identifier = (call_expression "strchr(__s,0x24)" identifier (argument_list "(__s,0x24)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;" if (parenthesized_expression "((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0))))" ( (binary_expression "(pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))" (parenthesized_expression "(pcVar8 != (char *)0x0)" ( (binary_expression "pcVar8 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))" ( (parenthesized_expression "(local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0))" ( (binary_expression "local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)" (binary_expression "local_40 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)" ( (comma_expression "iVar9 = strcmp((char *)param_2,__s), iVar9 < 0" (assignment_expression "iVar9 = strcmp((char *)param_2,__s)" identifier = (call_expression "strcmp((char *)param_2,__s)" identifier (argument_list "((char *)param_2,__s)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) , (binary_expression "iVar9 < 0" identifier < number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) })) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (expression_statement "piVar4 = (int *)*piVar2;" (assignment_expression "piVar4 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) })) (if_statement "if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }" { (expression_statement "*local_20 = piVar2;" (assignment_expression "*local_20 = piVar2" (pointer_expression "*local_20" * identifier) = identifier) ;) (expression_statement "*piVar3 = local_24;" (assignment_expression "*piVar3 = local_24" (pointer_expression "*piVar3" * identifier) = identifier) ;) })) (return_statement "return local_3c;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nlang_output_section_statement_type *\ngld_i386pe_place_orphan(asection *s,char *secname,int constraint)\n\n{\n  uint uVar1;\n  char *__s;\n  lang_statement_union *plVar2;\n  lang_statement_union *plVar3;\n  lang_output_section_statement_type *plVar4;\n  asection *paVar5;\n  etree_type *peVar6;\n  char *pcVar7;\n  int iVar8;\n  lang_statement_union *plVar9;\n  bfd *pbVar10;\n  size_t __n;\n  uint uVar11;\n  orphan_save *poVar12;\n  byte *pbVar13;\n  lang_output_section_statement_type *output;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char *local_40;\n  lang_output_section_statement_type *local_3c;\n  byte *local_38;\n  lang_statement_list_type add_child;\n  \n  bVar17 = 0;\n  if ((link_info._0_1_ & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = (byte *)secname;\n  }\n  else {\n    local_40 = strchr(secname,0x24);\n    local_38 = (byte *)secname;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)secname;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,secname,__n);\n      local_38[__n] = 0;\n    }\n  }\n  lang_list_init(&add_child);\n  if ((constraint == 0) &&\n     (local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),\n     local_3c != (lang_output_section_statement_type *)0x0)) {\n    plVar4 = (lang_output_section_statement_type *)0x0;\n    do {\n      output = local_3c;\n      if ((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = next_matching_output_section_statement(local_3c,0);\n      plVar4 = output;\n    } while (local_3c != (lang_output_section_statement_type *)0x0);\n    if (output != (lang_output_section_statement_type *)0x0) {\n      lang_add_section(&output->children,s,(flag_info *)0x0,output);\n      return output;\n    }\n    constraint = 0x17e;\n  }\n  if (gld_i386pe_place_orphan::lexical_block_10::orphan_init_done == 0) {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n    do {\n      if (poVar12->name != (char *)0x0) {\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }\n      poVar12 = poVar12 + 1;\n    } while (poVar12 != (orphan_save *)&DAT_001d0018);\n    gld_i386pe_place_orphan::lexical_block_10::orphan_init_done = 1;\n  }\n  uVar11 = s->flags;\n  if ((link_info._0_1_ & 3) != 2) {\n    pbVar10 = s->owner;\n    paVar5 = s;\n    while (paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),\n          paVar5 != (asection *)0x0) {\n      pbVar10 = paVar5->owner;\n      if ((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar11 & 1) == 0) {\n    poVar12 = (orphan_save *)0x0;\n    plVar9 = (lang_statement_union *)0x0;\n  }\n  else {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 4;\n    if (((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)) {\n      bVar15 = false;\n      bVar16 = (uVar11 & 0x10) == 0;\n      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n      if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }\n    }\n    plVar9 = (lang_statement_union *)poVar12->os;\n    if ((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0) {\n      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);\n      poVar12->os = (lang_output_section_statement_type *)plVar9;\n      if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }\n    }\n  }\n  peVar6 = exp_nameop(0x103,"__section_alignment__");\n  peVar6 = exp_unop(0x117,peVar6);\n  local_3c = lang_insert_orphan(s,(char *)local_38,constraint,&plVar9->output_section_statement,\n                                poVar12,peVar6,&add_child);\n  if ((link_info._0_1_ & 3) == 2) {\n    uVar11 = s->alignment_power;\n    local_3c->section_alignment = uVar11;\n    local_3c->bfd_section->alignment_power = uVar11;\n  }\nLAB_00055848:\n  plVar3 = (local_3c->children).head;\n  plVar9 = (lang_statement_union *)&local_3c->children;\n  while (plVar2 = plVar3, plVar2 != (lang_statement_union *)0x0) {\n    if ((plVar2->header).type == lang_input_section_enum) {\n      __s = ((plVar2->input_section).section)->name;\n      pcVar7 = strchr(__s,0x24);\n      if ((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;\n    }\n    plVar9 = plVar2;\n    plVar3 = (plVar2->header).next;\n  }\n  if (add_child.head != (lang_statement_union *)0x0) {\n    *add_child.tail = plVar2;\n    (plVar9->header).next = add_child.head;\n  }\n  return local_3c;\n}\n\n" comment (function_definition "lang_output_section_statement_type *\ngld_i386pe_place_orphan(asection *s,char *secname,int constraint)\n\n{\n  uint uVar1;\n  char *__s;\n  lang_statement_union *plVar2;\n  lang_statement_union *plVar3;\n  lang_output_section_statement_type *plVar4;\n  asection *paVar5;\n  etree_type *peVar6;\n  char *pcVar7;\n  int iVar8;\n  lang_statement_union *plVar9;\n  bfd *pbVar10;\n  size_t __n;\n  uint uVar11;\n  orphan_save *poVar12;\n  byte *pbVar13;\n  lang_output_section_statement_type *output;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char *local_40;\n  lang_output_section_statement_type *local_3c;\n  byte *local_38;\n  lang_statement_list_type add_child;\n  \n  bVar17 = 0;\n  if ((link_info._0_1_ & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = (byte *)secname;\n  }\n  else {\n    local_40 = strchr(secname,0x24);\n    local_38 = (byte *)secname;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)secname;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,secname,__n);\n      local_38[__n] = 0;\n    }\n  }\n  lang_list_init(&add_child);\n  if ((constraint == 0) &&\n     (local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),\n     local_3c != (lang_output_section_statement_type *)0x0)) {\n    plVar4 = (lang_output_section_statement_type *)0x0;\n    do {\n      output = local_3c;\n      if ((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = next_matching_output_section_statement(local_3c,0);\n      plVar4 = output;\n    } while (local_3c != (lang_output_section_statement_type *)0x0);\n    if (output != (lang_output_section_statement_type *)0x0) {\n      lang_add_section(&output->children,s,(flag_info *)0x0,output);\n      return output;\n    }\n    constraint = 0x17e;\n  }\n  if (gld_i386pe_place_orphan::lexical_block_10::orphan_init_done == 0) {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n    do {\n      if (poVar12->name != (char *)0x0) {\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }\n      poVar12 = poVar12 + 1;\n    } while (poVar12 != (orphan_save *)&DAT_001d0018);\n    gld_i386pe_place_orphan::lexical_block_10::orphan_init_done = 1;\n  }\n  uVar11 = s->flags;\n  if ((link_info._0_1_ & 3) != 2) {\n    pbVar10 = s->owner;\n    paVar5 = s;\n    while (paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),\n          paVar5 != (asection *)0x0) {\n      pbVar10 = paVar5->owner;\n      if ((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar11 & 1) == 0) {\n    poVar12 = (orphan_save *)0x0;\n    plVar9 = (lang_statement_union *)0x0;\n  }\n  else {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 4;\n    if (((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)) {\n      bVar15 = false;\n      bVar16 = (uVar11 & 0x10) == 0;\n      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n      if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }\n    }\n    plVar9 = (lang_statement_union *)poVar12->os;\n    if ((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0) {\n      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);\n      poVar12->os = (lang_output_section_statement_type *)plVar9;\n      if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }\n    }\n  }\n  peVar6 = exp_nameop(0x103,"__section_alignment__");\n  peVar6 = exp_unop(0x117,peVar6);\n  local_3c = lang_insert_orphan(s,(char *)local_38,constraint,&plVar9->output_section_statement,\n                                poVar12,peVar6,&add_child);\n  if ((link_info._0_1_ & 3) == 2) {\n    uVar11 = s->alignment_power;\n    local_3c->section_alignment = uVar11;\n    local_3c->bfd_section->alignment_power = uVar11;\n  }\nLAB_00055848:\n  plVar3 = (local_3c->children).head;\n  plVar9 = (lang_statement_union *)&local_3c->children;\n  while (plVar2 = plVar3, plVar2 != (lang_statement_union *)0x0) {\n    if ((plVar2->header).type == lang_input_section_enum) {\n      __s = ((plVar2->input_section).section)->name;\n      pcVar7 = strchr(__s,0x24);\n      if ((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;\n    }\n    plVar9 = plVar2;\n    plVar3 = (plVar2->header).next;\n  }\n  if (add_child.head != (lang_statement_union *)0x0) {\n    *add_child.tail = plVar2;\n    (plVar9->header).next = add_child.head;\n  }\n  return local_3c;\n}" type_identifier (pointer_declarator "*\ngld_i386pe_place_orphan(asection *s,char *secname,int constraint)" * (function_declarator "gld_i386pe_place_orphan(asection *s,char *secname,int constraint)" identifier (parameter_list "(asection *s,char *secname,int constraint)" ( (parameter_declaration "asection *s" type_identifier (pointer_declarator "*s" * identifier)) , (parameter_declaration "char *secname" primitive_type (pointer_declarator "*secname" * identifier)) , (parameter_declaration "int constraint" primitive_type identifier) )))) (compound_statement "{\n  uint uVar1;\n  char *__s;\n  lang_statement_union *plVar2;\n  lang_statement_union *plVar3;\n  lang_output_section_statement_type *plVar4;\n  asection *paVar5;\n  etree_type *peVar6;\n  char *pcVar7;\n  int iVar8;\n  lang_statement_union *plVar9;\n  bfd *pbVar10;\n  size_t __n;\n  uint uVar11;\n  orphan_save *poVar12;\n  byte *pbVar13;\n  lang_output_section_statement_type *output;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char *local_40;\n  lang_output_section_statement_type *local_3c;\n  byte *local_38;\n  lang_statement_list_type add_child;\n  \n  bVar17 = 0;\n  if ((link_info._0_1_ & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = (byte *)secname;\n  }\n  else {\n    local_40 = strchr(secname,0x24);\n    local_38 = (byte *)secname;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)secname;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,secname,__n);\n      local_38[__n] = 0;\n    }\n  }\n  lang_list_init(&add_child);\n  if ((constraint == 0) &&\n     (local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),\n     local_3c != (lang_output_section_statement_type *)0x0)) {\n    plVar4 = (lang_output_section_statement_type *)0x0;\n    do {\n      output = local_3c;\n      if ((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = next_matching_output_section_statement(local_3c,0);\n      plVar4 = output;\n    } while (local_3c != (lang_output_section_statement_type *)0x0);\n    if (output != (lang_output_section_statement_type *)0x0) {\n      lang_add_section(&output->children,s,(flag_info *)0x0,output);\n      return output;\n    }\n    constraint = 0x17e;\n  }\n  if (gld_i386pe_place_orphan::lexical_block_10::orphan_init_done == 0) {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n    do {\n      if (poVar12->name != (char *)0x0) {\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }\n      poVar12 = poVar12 + 1;\n    } while (poVar12 != (orphan_save *)&DAT_001d0018);\n    gld_i386pe_place_orphan::lexical_block_10::orphan_init_done = 1;\n  }\n  uVar11 = s->flags;\n  if ((link_info._0_1_ & 3) != 2) {\n    pbVar10 = s->owner;\n    paVar5 = s;\n    while (paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),\n          paVar5 != (asection *)0x0) {\n      pbVar10 = paVar5->owner;\n      if ((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar11 & 1) == 0) {\n    poVar12 = (orphan_save *)0x0;\n    plVar9 = (lang_statement_union *)0x0;\n  }\n  else {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 4;\n    if (((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)) {\n      bVar15 = false;\n      bVar16 = (uVar11 & 0x10) == 0;\n      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n      if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }\n    }\n    plVar9 = (lang_statement_union *)poVar12->os;\n    if ((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0) {\n      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);\n      poVar12->os = (lang_output_section_statement_type *)plVar9;\n      if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }\n    }\n  }\n  peVar6 = exp_nameop(0x103,"__section_alignment__");\n  peVar6 = exp_unop(0x117,peVar6);\n  local_3c = lang_insert_orphan(s,(char *)local_38,constraint,&plVar9->output_section_statement,\n                                poVar12,peVar6,&add_child);\n  if ((link_info._0_1_ & 3) == 2) {\n    uVar11 = s->alignment_power;\n    local_3c->section_alignment = uVar11;\n    local_3c->bfd_section->alignment_power = uVar11;\n  }\nLAB_00055848:\n  plVar3 = (local_3c->children).head;\n  plVar9 = (lang_statement_union *)&local_3c->children;\n  while (plVar2 = plVar3, plVar2 != (lang_statement_union *)0x0) {\n    if ((plVar2->header).type == lang_input_section_enum) {\n      __s = ((plVar2->input_section).section)->name;\n      pcVar7 = strchr(__s,0x24);\n      if ((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;\n    }\n    plVar9 = plVar2;\n    plVar3 = (plVar2->header).next;\n  }\n  if (add_child.head != (lang_statement_union *)0x0) {\n    *add_child.tail = plVar2;\n    (plVar9->header).next = add_child.head;\n  }\n  return local_3c;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "lang_statement_union *plVar2;" type_identifier (pointer_declarator "*plVar2" * identifier) ;) (declaration "lang_statement_union *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "lang_output_section_statement_type *plVar4;" type_identifier (pointer_declarator "*plVar4" * identifier) ;) (declaration "asection *paVar5;" type_identifier (pointer_declarator "*paVar5" * identifier) ;) (declaration "etree_type *peVar6;" type_identifier (pointer_declarator "*peVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "lang_statement_union *plVar9;" type_identifier (pointer_declarator "*plVar9" * identifier) ;) (declaration "bfd *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "orphan_save *poVar12;" type_identifier (pointer_declarator "*poVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "lang_output_section_statement_type *output;" type_identifier (pointer_declarator "*output" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "char *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "lang_output_section_statement_type *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "byte *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "lang_statement_list_type add_child;" type_identifier identifier ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if ((link_info._0_1_ & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = (byte *)secname;\n  }\n  else {\n    local_40 = strchr(secname,0x24);\n    local_38 = (byte *)secname;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)secname;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,secname,__n);\n      local_38[__n] = 0;\n    }\n  }" if (parenthesized_expression "((link_info._0_1_ & 3) == 2)" ( (binary_expression "(link_info._0_1_ & 3) == 2" (parenthesized_expression "(link_info._0_1_ & 3)" ( (binary_expression "link_info._0_1_ & 3" (field_expression "link_info._0_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_40 = (char *)0x0;\n    local_38 = (byte *)secname;\n  }" { (expression_statement "local_40 = (char *)0x0;" (assignment_expression "local_40 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_38 = (byte *)secname;" (assignment_expression "local_38 = (byte *)secname" identifier = (cast_expression "(byte *)secname" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n    local_40 = strchr(secname,0x24);\n    local_38 = (byte *)secname;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)secname;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,secname,__n);\n      local_38[__n] = 0;\n    }\n  }" else (compound_statement "{\n    local_40 = strchr(secname,0x24);\n    local_38 = (byte *)secname;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)secname;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,secname,__n);\n      local_38[__n] = 0;\n    }\n  }" { (expression_statement "local_40 = strchr(secname,0x24);" (assignment_expression "local_40 = strchr(secname,0x24)" identifier = (call_expression "strchr(secname,0x24)" identifier (argument_list "(secname,0x24)" ( identifier , number_literal )))) ;) (expression_statement "local_38 = (byte *)secname;" (assignment_expression "local_38 = (byte *)secname" identifier = (cast_expression "(byte *)secname" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)secname;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,secname,__n);\n      local_38[__n] = 0;\n    }" if (parenthesized_expression "(local_40 != (char *)0x0)" ( (binary_expression "local_40 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __n = (int)local_40 - (int)secname;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,secname,__n);\n      local_38[__n] = 0;\n    }" { (expression_statement "__n = (int)local_40 - (int)secname;" (assignment_expression "__n = (int)local_40 - (int)secname" identifier = (binary_expression "(int)local_40 - (int)secname" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)secname" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_38 = (byte *)xmalloc(__n + 1);" (assignment_expression "local_38 = (byte *)xmalloc(__n + 1)" identifier = (cast_expression "(byte *)xmalloc(__n + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(local_38,secname,__n);" (call_expression "memcpy(local_38,secname,__n)" identifier (argument_list "(local_38,secname,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_38[__n] = 0;" (assignment_expression "local_38[__n] = 0" (subscript_expression "local_38[__n]" identifier [ identifier ]) = number_literal) ;) })) }))) (expression_statement "lang_list_init(&add_child);" (call_expression "lang_list_init(&add_child)" identifier (argument_list "(&add_child)" ( (pointer_expression "&add_child" & identifier) ))) ;) (if_statement "if ((constraint == 0) &&\n     (local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),\n     local_3c != (lang_output_section_statement_type *)0x0)) {\n    plVar4 = (lang_output_section_statement_type *)0x0;\n    do {\n      output = local_3c;\n      if ((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = next_matching_output_section_statement(local_3c,0);\n      plVar4 = output;\n    } while (local_3c != (lang_output_section_statement_type *)0x0);\n    if (output != (lang_output_section_statement_type *)0x0) {\n      lang_add_section(&output->children,s,(flag_info *)0x0,output);\n      return output;\n    }\n    constraint = 0x17e;\n  }" if (parenthesized_expression "((constraint == 0) &&\n     (local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),\n     local_3c != (lang_output_section_statement_type *)0x0))" ( (binary_expression "(constraint == 0) &&\n     (local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),\n     local_3c != (lang_output_section_statement_type *)0x0)" (parenthesized_expression "(constraint == 0)" ( (binary_expression "constraint == 0" identifier == number_literal) )) && (parenthesized_expression "(local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),\n     local_3c != (lang_output_section_statement_type *)0x0)" ( (comma_expression "local_3c = lang_output_section_statement_lookup((char *)local_38,0,0),\n     local_3c != (lang_output_section_statement_type *)0x0" (assignment_expression "local_3c = lang_output_section_statement_lookup((char *)local_38,0,0)" identifier = (call_expression "lang_output_section_statement_lookup((char *)local_38,0,0)" identifier (argument_list "((char *)local_38,0,0)" ( (cast_expression "(char *)local_38" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal )))) , (binary_expression "local_3c != (lang_output_section_statement_type *)0x0" identifier != (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    plVar4 = (lang_output_section_statement_type *)0x0;\n    do {\n      output = local_3c;\n      if ((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = next_matching_output_section_statement(local_3c,0);\n      plVar4 = output;\n    } while (local_3c != (lang_output_section_statement_type *)0x0);\n    if (output != (lang_output_section_statement_type *)0x0) {\n      lang_add_section(&output->children,s,(flag_info *)0x0,output);\n      return output;\n    }\n    constraint = 0x17e;\n  }" { (expression_statement "plVar4 = (lang_output_section_statement_type *)0x0;" (assignment_expression "plVar4 = (lang_output_section_statement_type *)0x0" identifier = (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      output = local_3c;\n      if ((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = next_matching_output_section_statement(local_3c,0);\n      plVar4 = output;\n    } while (local_3c != (lang_output_section_statement_type *)0x0);" do (compound_statement "{\n      output = local_3c;\n      if ((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = next_matching_output_section_statement(local_3c,0);\n      plVar4 = output;\n    }" { (expression_statement "output = local_3c;" (assignment_expression "output = local_3c" identifier = identifier) ;) (if_statement "if ((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))) {\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }" if (parenthesized_expression "((local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0))))" ( (binary_expression "(local_3c->bfd_section != (asection *)0x0) &&\n         ((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))" (parenthesized_expression "(local_3c->bfd_section != (asection *)0x0)" ( (binary_expression "local_3c->bfd_section != (asection *)0x0" (field_expression "local_3c->bfd_section" identifier -> field_identifier) != (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)))" ( (parenthesized_expression "(uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0))" ( (comma_expression "uVar11 = local_3c->bfd_section->flags, uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)" (assignment_expression "uVar11 = local_3c->bfd_section->flags" identifier = (field_expression "local_3c->bfd_section->flags" (field_expression "local_3c->bfd_section" identifier -> field_identifier) -> field_identifier)) , (binary_expression "uVar11 == 0 ||\n          (output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)" (binary_expression "uVar11 == 0" identifier == number_literal) || (parenthesized_expression "(output = plVar4, ((uVar11 ^ s->flags) & 3) == 0)" ( (comma_expression "output = plVar4, ((uVar11 ^ s->flags) & 3) == 0" (assignment_expression "output = plVar4" identifier = identifier) , (binary_expression "((uVar11 ^ s->flags) & 3) == 0" (parenthesized_expression "((uVar11 ^ s->flags) & 3)" ( (binary_expression "(uVar11 ^ s->flags) & 3" (parenthesized_expression "(uVar11 ^ s->flags)" ( (binary_expression "uVar11 ^ s->flags" identifier ^ (field_expression "s->flags" identifier -> field_identifier)) )) & number_literal) )) == number_literal)) )))) )) ))) )) (compound_statement "{\n        lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);\n        goto LAB_00055848;\n      }" { (expression_statement "lang_add_section(&add_child,s,(flag_info *)0x0,local_3c);" (call_expression "lang_add_section(&add_child,s,(flag_info *)0x0,local_3c)" identifier (argument_list "(&add_child,s,(flag_info *)0x0,local_3c)" ( (pointer_expression "&add_child" & identifier) , identifier , (cast_expression "(flag_info *)0x0" ( (type_descriptor "flag_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier ))) ;) (goto_statement "goto LAB_00055848;" goto statement_identifier ;) })) (expression_statement "local_3c = next_matching_output_section_statement(local_3c,0);" (assignment_expression "local_3c = next_matching_output_section_statement(local_3c,0)" identifier = (call_expression "next_matching_output_section_statement(local_3c,0)" identifier (argument_list "(local_3c,0)" ( identifier , number_literal )))) ;) (expression_statement "plVar4 = output;" (assignment_expression "plVar4 = output" identifier = identifier) ;) }) while (parenthesized_expression "(local_3c != (lang_output_section_statement_type *)0x0)" ( (binary_expression "local_3c != (lang_output_section_statement_type *)0x0" identifier != (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (output != (lang_output_section_statement_type *)0x0) {\n      lang_add_section(&output->children,s,(flag_info *)0x0,output);\n      return output;\n    }" if (parenthesized_expression "(output != (lang_output_section_statement_type *)0x0)" ( (binary_expression "output != (lang_output_section_statement_type *)0x0" identifier != (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lang_add_section(&output->children,s,(flag_info *)0x0,output);\n      return output;\n    }" { (expression_statement "lang_add_section(&output->children,s,(flag_info *)0x0,output);" (call_expression "lang_add_section(&output->children,s,(flag_info *)0x0,output)" identifier (argument_list "(&output->children,s,(flag_info *)0x0,output)" ( (pointer_expression "&output->children" & (field_expression "output->children" identifier -> field_identifier)) , identifier , (cast_expression "(flag_info *)0x0" ( (type_descriptor "flag_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier ))) ;) (return_statement "return output;" return identifier ;) })) (expression_statement "constraint = 0x17e;" (assignment_expression "constraint = 0x17e" identifier = number_literal) ;) })) (if_statement "if (gld_i386pe_place_orphan::lexical_block_10::orphan_init_done == 0) {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n    do {\n      if (poVar12->name != (char *)0x0) {\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }\n      poVar12 = poVar12 + 1;\n    } while (poVar12 != (orphan_save *)&DAT_001d0018);\n    gld_i386pe_place_orphan::lexical_block_10::orphan_init_done = 1;\n  }" if (parenthesized_expression "(gld_i386pe_place_orphan::lexical_block_10::orphan_init_done == 0)" ( (binary_expression "gld_i386pe_place_orphan::lexical_block_10::orphan_init_done == 0" identifier (ERROR "::lexical_block_10::orphan_init_done" : : identifier : : identifier) == number_literal) )) (compound_statement "{\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n    do {\n      if (poVar12->name != (char *)0x0) {\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }\n      poVar12 = poVar12 + 1;\n    } while (poVar12 != (orphan_save *)&DAT_001d0018);\n    gld_i386pe_place_orphan::lexical_block_10::orphan_init_done = 1;\n  }" { (ERROR "poVar12 = gld_i386pe_place_orphan::" (assignment_expression "poVar12 = gld_i386pe_place_orphan" identifier = identifier) : :) (labeled_statement "lexical_block_10::hold;" statement_identifier : (ERROR ":" :) (expression_statement "hold;" identifier ;)) (do_statement "do {\n      if (poVar12->name != (char *)0x0) {\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }\n      poVar12 = poVar12 + 1;\n    } while (poVar12 != (orphan_save *)&DAT_001d0018);" do (compound_statement "{\n      if (poVar12->name != (char *)0x0) {\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }\n      poVar12 = poVar12 + 1;\n    }" { (if_statement "if (poVar12->name != (char *)0x0) {\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }" if (parenthesized_expression "(poVar12->name != (char *)0x0)" ( (binary_expression "poVar12->name != (char *)0x0" (field_expression "poVar12->name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);\n        poVar12->os = plVar4;\n        if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }\n      }" { (expression_statement "plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0);" (assignment_expression "plVar4 = lang_output_section_statement_lookup(poVar12->name,0,0)" identifier = (call_expression "lang_output_section_statement_lookup(poVar12->name,0,0)" identifier (argument_list "(poVar12->name,0,0)" ( (field_expression "poVar12->name" identifier -> field_identifier) , number_literal , number_literal )))) ;) (expression_statement "poVar12->os = plVar4;" (assignment_expression "poVar12->os = plVar4" (field_expression "poVar12->os" identifier -> field_identifier) = identifier) ;) (if_statement "if ((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)) {\n          plVar4->flags = poVar12->flags;\n        }" if (parenthesized_expression "((plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0))" ( (binary_expression "(plVar4 != (lang_output_section_statement_type *)0x0) && (plVar4->flags == 0)" (parenthesized_expression "(plVar4 != (lang_output_section_statement_type *)0x0)" ( (binary_expression "plVar4 != (lang_output_section_statement_type *)0x0" identifier != (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(plVar4->flags == 0)" ( (binary_expression "plVar4->flags == 0" (field_expression "plVar4->flags" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n          plVar4->flags = poVar12->flags;\n        }" { (expression_statement "plVar4->flags = poVar12->flags;" (assignment_expression "plVar4->flags = poVar12->flags" (field_expression "plVar4->flags" identifier -> field_identifier) = (field_expression "poVar12->flags" identifier -> field_identifier)) ;) })) })) (expression_statement "poVar12 = poVar12 + 1;" (assignment_expression "poVar12 = poVar12 + 1" identifier = (binary_expression "poVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(poVar12 != (orphan_save *)&DAT_001d0018)" ( (binary_expression "poVar12 != (orphan_save *)&DAT_001d0018" identifier != (cast_expression "(orphan_save *)&DAT_001d0018" ( (type_descriptor "orphan_save *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_001d0018" & identifier))) )) ;) (labeled_statement "gld_i386pe_place_orphan::lexical_block_10::orphan_init_done = 1;" statement_identifier : (ERROR ":" :) (labeled_statement "lexical_block_10::orphan_init_done = 1;" statement_identifier : (ERROR ":" :) (expression_statement "orphan_init_done = 1;" (assignment_expression "orphan_init_done = 1" identifier = number_literal) ;))) })) (expression_statement "uVar11 = s->flags;" (assignment_expression "uVar11 = s->flags" identifier = (field_expression "s->flags" identifier -> field_identifier)) ;) (if_statement "if ((link_info._0_1_ & 3) != 2) {\n    pbVar10 = s->owner;\n    paVar5 = s;\n    while (paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),\n          paVar5 != (asection *)0x0) {\n      pbVar10 = paVar5->owner;\n      if ((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }\n    }\n  }" if (parenthesized_expression "((link_info._0_1_ & 3) != 2)" ( (binary_expression "(link_info._0_1_ & 3) != 2" (parenthesized_expression "(link_info._0_1_ & 3)" ( (binary_expression "link_info._0_1_ & 3" (field_expression "link_info._0_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    pbVar10 = s->owner;\n    paVar5 = s;\n    while (paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),\n          paVar5 != (asection *)0x0) {\n      pbVar10 = paVar5->owner;\n      if ((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }\n    }\n  }" { (expression_statement "pbVar10 = s->owner;" (assignment_expression "pbVar10 = s->owner" identifier = (field_expression "s->owner" identifier -> field_identifier)) ;) (expression_statement "paVar5 = s;" (assignment_expression "paVar5 = s" identifier = identifier) ;) (while_statement "while (paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),\n          paVar5 != (asection *)0x0) {\n      pbVar10 = paVar5->owner;\n      if ((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }\n    }" while (parenthesized_expression "(paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),\n          paVar5 != (asection *)0x0)" ( (comma_expression "paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5),\n          paVar5 != (asection *)0x0" (assignment_expression "paVar5 = (asection *)bfd_get_next_section_by_name(pbVar10,paVar5)" identifier = (cast_expression "(asection *)bfd_get_next_section_by_name(pbVar10,paVar5)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_get_next_section_by_name(pbVar10,paVar5)" identifier (argument_list "(pbVar10,paVar5)" ( identifier , identifier ))))) , (binary_expression "paVar5 != (asection *)0x0" identifier != (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      pbVar10 = paVar5->owner;\n      if ((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }\n    }" { (expression_statement "pbVar10 = paVar5->owner;" (assignment_expression "pbVar10 = paVar5->owner" identifier = (field_expression "paVar5->owner" identifier -> field_identifier)) ;) (if_statement "if ((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }" if (parenthesized_expression "((((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0))))" ( (binary_expression "(((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)) &&\n         ((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))" (parenthesized_expression "(((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0))" ( (binary_expression "((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)) &&\n          ((pbVar10->field_0x29 & 8) == 0)" (parenthesized_expression "((paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))" ( (binary_expression "(paVar5->output_section == (bfd_section *)0x0) &&\n           (uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)" (parenthesized_expression "(paVar5->output_section == (bfd_section *)0x0)" ( (binary_expression "paVar5->output_section == (bfd_section *)0x0" (field_expression "paVar5->output_section" identifier -> field_identifier) == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)" ( (comma_expression "uVar1 = paVar5->flags, ((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0" (assignment_expression "uVar1 = paVar5->flags" identifier = (field_expression "paVar5->flags" identifier -> field_identifier)) , (binary_expression "((uVar11 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0" (binary_expression "((uVar11 ^ uVar1) & 3) == 0" (parenthesized_expression "((uVar11 ^ uVar1) & 3)" ( (binary_expression "(uVar11 ^ uVar1) & 3" (parenthesized_expression "(uVar11 ^ uVar1)" ( (binary_expression "uVar11 ^ uVar1" identifier ^ identifier) )) & number_literal) )) == number_literal) && (binary_expression "(uVar1 & 0x8000) == 0" (parenthesized_expression "(uVar1 & 0x8000)" ( (binary_expression "uVar1 & 0x8000" identifier & number_literal) )) == number_literal))) ))) )) && (parenthesized_expression "((pbVar10->field_0x29 & 8) == 0)" ( (binary_expression "(pbVar10->field_0x29 & 8) == 0" (parenthesized_expression "(pbVar10->field_0x29 & 8)" ( (binary_expression "pbVar10->field_0x29 & 8" (field_expression "pbVar10->field_0x29" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))" ( (parenthesized_expression "(pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0))" ( (binary_expression "pbVar10->usrdata != (void *)0x0 &&\n          ((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)" (binary_expression "pbVar10->usrdata != (void *)0x0" (field_expression "pbVar10->usrdata" identifier -> field_identifier) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "((*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)" ( (binary_expression "(*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0" (parenthesized_expression "(*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10)" ( (binary_expression "*(byte *)((int)pbVar10->usrdata + 0x24) & 0x10" (pointer_expression "*(byte *)((int)pbVar10->usrdata + 0x24)" * (cast_expression "(byte *)((int)pbVar10->usrdata + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar10->usrdata + 0x24)" ( (binary_expression "(int)pbVar10->usrdata + 0x24" (cast_expression "(int)pbVar10->usrdata" ( (type_descriptor "int" primitive_type) ) (field_expression "pbVar10->usrdata" identifier -> field_identifier)) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n        uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;\n      }" { (expression_statement "uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8;" (assignment_expression "uVar11 = (uVar1 ^ 8 | uVar11 ^ 8) ^ 8" identifier = (binary_expression "(uVar1 ^ 8 | uVar11 ^ 8) ^ 8" (parenthesized_expression "(uVar1 ^ 8 | uVar11 ^ 8)" ( (binary_expression "uVar1 ^ 8 | uVar11 ^ 8" (binary_expression "uVar1 ^ 8" identifier ^ number_literal) | (binary_expression "uVar11 ^ 8" identifier ^ number_literal)) )) ^ number_literal)) ;) })) })) })) (if_statement "if ((uVar11 & 1) == 0) {\n    poVar12 = (orphan_save *)0x0;\n    plVar9 = (lang_statement_union *)0x0;\n  }\n  else {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 4;\n    if (((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)) {\n      bVar15 = false;\n      bVar16 = (uVar11 & 0x10) == 0;\n      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n      if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }\n    }\n    plVar9 = (lang_statement_union *)poVar12->os;\n    if ((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0) {\n      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);\n      poVar12->os = (lang_output_section_statement_type *)plVar9;\n      if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }\n    }\n  }" if (parenthesized_expression "((uVar11 & 1) == 0)" ( (binary_expression "(uVar11 & 1) == 0" (parenthesized_expression "(uVar11 & 1)" ( (binary_expression "uVar11 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    poVar12 = (orphan_save *)0x0;\n    plVar9 = (lang_statement_union *)0x0;\n  }" { (expression_statement "poVar12 = (orphan_save *)0x0;" (assignment_expression "poVar12 = (orphan_save *)0x0" identifier = (cast_expression "(orphan_save *)0x0" ( (type_descriptor "orphan_save *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar9 = (lang_statement_union *)0x0;" (assignment_expression "plVar9 = (lang_statement_union *)0x0" identifier = (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 4;\n    if (((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)) {\n      bVar15 = false;\n      bVar16 = (uVar11 & 0x10) == 0;\n      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n      if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }\n    }\n    plVar9 = (lang_statement_union *)poVar12->os;\n    if ((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0) {\n      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);\n      poVar12->os = (lang_output_section_statement_type *)plVar9;\n      if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }\n    }\n  }" else (compound_statement "{\n    poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 4;\n    if (((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)) {\n      bVar15 = false;\n      bVar16 = (uVar11 & 0x10) == 0;\n      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n      if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }\n    }\n    plVar9 = (lang_statement_union *)poVar12->os;\n    if ((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0) {\n      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);\n      poVar12->os = (lang_output_section_statement_type *)plVar9;\n      if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }\n    }\n  }" { (ERROR "poVar12 = gld_i386pe_place_orphan::" (assignment_expression "poVar12 = gld_i386pe_place_orphan" identifier = identifier) : :) (labeled_statement "lexical_block_10::hold + 4;" statement_identifier : (ERROR ":" :) (expression_statement "hold + 4;" (binary_expression "hold + 4" identifier + number_literal) ;)) (if_statement "if (((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)) {\n      bVar15 = false;\n      bVar16 = (uVar11 & 0x10) == 0;\n      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n      if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }\n    }" if (parenthesized_expression "(((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0))" ( (binary_expression "((uVar11 & 0x102) != 0) &&\n       (poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)" (parenthesized_expression "((uVar11 & 0x102) != 0)" ( (binary_expression "(uVar11 & 0x102) != 0" (parenthesized_expression "(uVar11 & 0x102)" ( (binary_expression "uVar11 & 0x102" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0)" ( (comma_expression "poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3, (uVar11 & 8) != 0" (binary_expression "poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 3" (assignment_expression "poVar12 = gld_i386pe_place_orphan" identifier = identifier) (ERROR "::lexical_block_10::hold" : : identifier : : identifier) + number_literal) , (binary_expression "(uVar11 & 8) != 0" (parenthesized_expression "(uVar11 & 8)" ( (binary_expression "uVar11 & 8" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n      bVar15 = false;\n      bVar16 = (uVar11 & 0x10) == 0;\n      poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold;\n      if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }\n    }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar16 = (uVar11 & 0x10) == 0;" (assignment_expression "bVar16 = (uVar11 & 0x10) == 0" identifier = (binary_expression "(uVar11 & 0x10) == 0" (parenthesized_expression "(uVar11 & 0x10)" ( (binary_expression "uVar11 & 0x10" identifier & number_literal) )) == number_literal)) ;) (ERROR "poVar12 = gld_i386pe_place_orphan::" (assignment_expression "poVar12 = gld_i386pe_place_orphan" identifier = identifier) : :) (labeled_statement "lexical_block_10::hold;" statement_identifier : (ERROR ":" :) (expression_statement "hold;" identifier ;)) (if_statement "if (bVar16) {\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n        iVar8 = 7;\n        pbVar13 = local_38;\n        pbVar14 = (byte *)".idata$";\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 1;\n        if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }\n      }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar13 = local_38;" (assignment_expression "pbVar13 = local_38" identifier = identifier) ;) (expression_statement "pbVar14 = (byte *)".idata$";" (assignment_expression "pbVar14 = (byte *)".idata$"" identifier = (cast_expression "(byte *)".idata$"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".idata$"" " string_content "))) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar15 = *pbVar13 < *pbVar14;\n          bVar16 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar13 < *pbVar14;" (assignment_expression "bVar15 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar16 = *pbVar13 == *pbVar14;" (assignment_expression "bVar16 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (ERROR "poVar12 = gld_i386pe_place_orphan::" (assignment_expression "poVar12 = gld_i386pe_place_orphan" identifier = identifier) : :) (labeled_statement "lexical_block_10::hold + 1;" statement_identifier : (ERROR ":" :) (expression_statement "hold + 1;" (binary_expression "hold + 1" identifier + number_literal) ;)) (if_statement "if ((!bVar15 && !bVar16) != bVar15) {\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }" if (parenthesized_expression "((!bVar15 && !bVar16) != bVar15)" ( (binary_expression "(!bVar15 && !bVar16) != bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" ( (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) != identifier) )) (compound_statement "{\n          poVar12 = gld_i386pe_place_orphan::lexical_block_10::hold + 2;\n        }" { (ERROR "poVar12 = gld_i386pe_place_orphan::" (assignment_expression "poVar12 = gld_i386pe_place_orphan" identifier = identifier) : :) (labeled_statement "lexical_block_10::hold + 2;" statement_identifier : (ERROR ":" :) (expression_statement "hold + 2;" (binary_expression "hold + 2" identifier + number_literal) ;)) })) })) })) (expression_statement "plVar9 = (lang_statement_union *)poVar12->os;" (assignment_expression "plVar9 = (lang_statement_union *)poVar12->os" identifier = (cast_expression "(lang_statement_union *)poVar12->os" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "poVar12->os" identifier -> field_identifier))) ;) (if_statement "if ((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0) {\n      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);\n      poVar12->os = (lang_output_section_statement_type *)plVar9;\n      if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }\n    }" if (parenthesized_expression "((lang_statement_union *)poVar12->os == (lang_statement_union *)0x0)" ( (binary_expression "(lang_statement_union *)poVar12->os == (lang_statement_union *)0x0" (cast_expression "(lang_statement_union *)poVar12->os" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "poVar12->os" identifier -> field_identifier)) == (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);\n      poVar12->os = (lang_output_section_statement_type *)plVar9;\n      if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }\n    }" { (expression_statement "plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0);" (assignment_expression "plVar9 = (lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0)" identifier = (cast_expression "(lang_statement_union *)lang_output_section_statement_lookup(poVar12->name,0,0)" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "lang_output_section_statement_lookup(poVar12->name,0,0)" identifier (argument_list "(poVar12->name,0,0)" ( (field_expression "poVar12->name" identifier -> field_identifier) , number_literal , number_literal ))))) ;) (expression_statement "poVar12->os = (lang_output_section_statement_type *)plVar9;" (assignment_expression "poVar12->os = (lang_output_section_statement_type *)plVar9" (field_expression "poVar12->os" identifier -> field_identifier) = (cast_expression "(lang_output_section_statement_type *)plVar9" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)) {\n        plVar9 = lang_output_section_statement.head;\n      }" if (parenthesized_expression "((plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0))" ( (binary_expression "(plVar9 == (lang_statement_union *)0x0) &&\n         (plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)" (parenthesized_expression "(plVar9 == (lang_statement_union *)0x0)" ( (binary_expression "plVar9 == (lang_statement_union *)0x0" identifier == (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0)" ( (comma_expression "plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0),\n         plVar9 == (lang_statement_union *)0x0" (assignment_expression "plVar9 = (lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0)" identifier = (cast_expression "(lang_statement_union *)\n                   lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0)" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "lang_output_section_find_by_flags\n                             (s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0)" identifier (argument_list "(s,uVar11,&poVar12->os,(lang_match_sec_type_func)0x0)" ( identifier , identifier , (pointer_expression "&poVar12->os" & (field_expression "poVar12->os" identifier -> field_identifier)) , (cast_expression "(lang_match_sec_type_func)0x0" ( (type_descriptor "lang_match_sec_type_func" type_identifier) ) number_literal) ))))) , (binary_expression "plVar9 == (lang_statement_union *)0x0" identifier == (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        plVar9 = lang_output_section_statement.head;\n      }" { (expression_statement "plVar9 = lang_output_section_statement.head;" (assignment_expression "plVar9 = lang_output_section_statement.head" identifier = (field_expression "lang_output_section_statement.head" identifier . field_identifier)) ;) })) })) }))) (expression_statement "peVar6 = exp_nameop(0x103,"__section_alignment__");" (assignment_expression "peVar6 = exp_nameop(0x103,"__section_alignment__")" identifier = (call_expression "exp_nameop(0x103,"__section_alignment__")" identifier (argument_list "(0x103,"__section_alignment__")" ( number_literal , (string_literal ""__section_alignment__"" " string_content ") )))) ;) (expression_statement "peVar6 = exp_unop(0x117,peVar6);" (assignment_expression "peVar6 = exp_unop(0x117,peVar6)" identifier = (call_expression "exp_unop(0x117,peVar6)" identifier (argument_list "(0x117,peVar6)" ( number_literal , identifier )))) ;) (expression_statement "local_3c = lang_insert_orphan(s,(char *)local_38,constraint,&plVar9->output_section_statement,\n                                poVar12,peVar6,&add_child);" (assignment_expression "local_3c = lang_insert_orphan(s,(char *)local_38,constraint,&plVar9->output_section_statement,\n                                poVar12,peVar6,&add_child)" identifier = (call_expression "lang_insert_orphan(s,(char *)local_38,constraint,&plVar9->output_section_statement,\n                                poVar12,peVar6,&add_child)" identifier (argument_list "(s,(char *)local_38,constraint,&plVar9->output_section_statement,\n                                poVar12,peVar6,&add_child)" ( identifier , (cast_expression "(char *)local_38" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (pointer_expression "&plVar9->output_section_statement" & (field_expression "plVar9->output_section_statement" identifier -> field_identifier)) , identifier , identifier , (pointer_expression "&add_child" & identifier) )))) ;) (if_statement "if ((link_info._0_1_ & 3) == 2) {\n    uVar11 = s->alignment_power;\n    local_3c->section_alignment = uVar11;\n    local_3c->bfd_section->alignment_power = uVar11;\n  }" if (parenthesized_expression "((link_info._0_1_ & 3) == 2)" ( (binary_expression "(link_info._0_1_ & 3) == 2" (parenthesized_expression "(link_info._0_1_ & 3)" ( (binary_expression "link_info._0_1_ & 3" (field_expression "link_info._0_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar11 = s->alignment_power;\n    local_3c->section_alignment = uVar11;\n    local_3c->bfd_section->alignment_power = uVar11;\n  }" { (expression_statement "uVar11 = s->alignment_power;" (assignment_expression "uVar11 = s->alignment_power" identifier = (field_expression "s->alignment_power" identifier -> field_identifier)) ;) (expression_statement "local_3c->section_alignment = uVar11;" (assignment_expression "local_3c->section_alignment = uVar11" (field_expression "local_3c->section_alignment" identifier -> field_identifier) = identifier) ;) (expression_statement "local_3c->bfd_section->alignment_power = uVar11;" (assignment_expression "local_3c->bfd_section->alignment_power = uVar11" (field_expression "local_3c->bfd_section->alignment_power" (field_expression "local_3c->bfd_section" identifier -> field_identifier) -> field_identifier) = identifier) ;) })) (labeled_statement "LAB_00055848:\n  plVar3 = (local_3c->children).head;" statement_identifier : (expression_statement "plVar3 = (local_3c->children).head;" (assignment_expression "plVar3 = (local_3c->children).head" identifier = (field_expression "(local_3c->children).head" (parenthesized_expression "(local_3c->children)" ( (field_expression "local_3c->children" identifier -> field_identifier) )) . field_identifier)) ;)) (expression_statement "plVar9 = (lang_statement_union *)&local_3c->children;" (assignment_expression "plVar9 = (lang_statement_union *)&local_3c->children" identifier = (cast_expression "(lang_statement_union *)&local_3c->children" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_3c->children" & (field_expression "local_3c->children" identifier -> field_identifier)))) ;) (while_statement "while (plVar2 = plVar3, plVar2 != (lang_statement_union *)0x0) {\n    if ((plVar2->header).type == lang_input_section_enum) {\n      __s = ((plVar2->input_section).section)->name;\n      pcVar7 = strchr(__s,0x24);\n      if ((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;\n    }\n    plVar9 = plVar2;\n    plVar3 = (plVar2->header).next;\n  }" while (parenthesized_expression "(plVar2 = plVar3, plVar2 != (lang_statement_union *)0x0)" ( (comma_expression "plVar2 = plVar3, plVar2 != (lang_statement_union *)0x0" (assignment_expression "plVar2 = plVar3" identifier = identifier) , (binary_expression "plVar2 != (lang_statement_union *)0x0" identifier != (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    if ((plVar2->header).type == lang_input_section_enum) {\n      __s = ((plVar2->input_section).section)->name;\n      pcVar7 = strchr(__s,0x24);\n      if ((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;\n    }\n    plVar9 = plVar2;\n    plVar3 = (plVar2->header).next;\n  }" { (if_statement "if ((plVar2->header).type == lang_input_section_enum) {\n      __s = ((plVar2->input_section).section)->name;\n      pcVar7 = strchr(__s,0x24);\n      if ((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;\n    }" if (parenthesized_expression "((plVar2->header).type == lang_input_section_enum)" ( (binary_expression "(plVar2->header).type == lang_input_section_enum" (field_expression "(plVar2->header).type" (parenthesized_expression "(plVar2->header)" ( (field_expression "plVar2->header" identifier -> field_identifier) )) . field_identifier) == identifier) )) (compound_statement "{\n      __s = ((plVar2->input_section).section)->name;\n      pcVar7 = strchr(__s,0x24);\n      if ((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;\n    }" { (expression_statement "__s = ((plVar2->input_section).section)->name;" (assignment_expression "__s = ((plVar2->input_section).section)->name" identifier = (field_expression "((plVar2->input_section).section)->name" (parenthesized_expression "((plVar2->input_section).section)" ( (field_expression "(plVar2->input_section).section" (parenthesized_expression "(plVar2->input_section)" ( (field_expression "plVar2->input_section" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (expression_statement "pcVar7 = strchr(__s,0x24);" (assignment_expression "pcVar7 = strchr(__s,0x24)" identifier = (call_expression "strchr(__s,0x24)" identifier (argument_list "(__s,0x24)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))) break;" if (parenthesized_expression "((pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0))))" ( (binary_expression "(pcVar7 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))" (parenthesized_expression "(pcVar7 != (char *)0x0)" ( (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)))" ( (parenthesized_expression "(local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0))" ( (binary_expression "local_40 == (char *)0x0 || (iVar8 = strcmp(secname,__s), iVar8 < 0)" (binary_expression "local_40 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(iVar8 = strcmp(secname,__s), iVar8 < 0)" ( (comma_expression "iVar8 = strcmp(secname,__s), iVar8 < 0" (assignment_expression "iVar8 = strcmp(secname,__s)" identifier = (call_expression "strcmp(secname,__s)" identifier (argument_list "(secname,__s)" ( identifier , identifier )))) , (binary_expression "iVar8 < 0" identifier < number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) })) (expression_statement "plVar9 = plVar2;" (assignment_expression "plVar9 = plVar2" identifier = identifier) ;) (expression_statement "plVar3 = (plVar2->header).next;" (assignment_expression "plVar3 = (plVar2->header).next" identifier = (field_expression "(plVar2->header).next" (parenthesized_expression "(plVar2->header)" ( (field_expression "plVar2->header" identifier -> field_identifier) )) . field_identifier)) ;) })) (if_statement "if (add_child.head != (lang_statement_union *)0x0) {\n    *add_child.tail = plVar2;\n    (plVar9->header).next = add_child.head;\n  }" if (parenthesized_expression "(add_child.head != (lang_statement_union *)0x0)" ( (binary_expression "add_child.head != (lang_statement_union *)0x0" (field_expression "add_child.head" identifier . field_identifier) != (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *add_child.tail = plVar2;\n    (plVar9->header).next = add_child.head;\n  }" { (expression_statement "*add_child.tail = plVar2;" (assignment_expression "*add_child.tail = plVar2" (pointer_expression "*add_child.tail" * (field_expression "add_child.tail" identifier . field_identifier)) = identifier) ;) (expression_statement "(plVar9->header).next = add_child.head;" (assignment_expression "(plVar9->header).next = add_child.head" (field_expression "(plVar9->header).next" (parenthesized_expression "(plVar9->header)" ( (field_expression "plVar9->header" identifier -> field_identifier) )) . field_identifier) = (field_expression "add_child.head" identifier . field_identifier)) ;) })) (return_statement "return local_3c;" return identifier ;) })))
(translation_unit "int FUN_00055650(int param_1,byte *param_2,int param_3)\n\n{\n  uint uVar1;\n  char *__s;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  int iVar9;\n  size_t __n;\n  uint uVar10;\n  undefined **ppuVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  char *local_40;\n  int local_3c;\n  byte *local_38;\n  int local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x55659;\n  if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }\n  FUN_00023e00(&local_24);\n  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }\n  if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }\n  uVar10 = *(uint *)(param_1 + 0x14);\n  if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }\n  uVar7 = FUN_00032c60(0x103,"__section_alignment__");\n  uVar7 = FUN_00032be0(0x117,uVar7);\n  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);\n  if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }\nLAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);\n  piVar3 = (int *)(local_3c + 8);\n  while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }\n  if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }\n  return local_3c;\n}\n\n" (function_definition "int FUN_00055650(int param_1,byte *param_2,int param_3)\n\n{\n  uint uVar1;\n  char *__s;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  int iVar9;\n  size_t __n;\n  uint uVar10;\n  undefined **ppuVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  char *local_40;\n  int local_3c;\n  byte *local_38;\n  int local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x55659;\n  if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }\n  FUN_00023e00(&local_24);\n  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }\n  if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }\n  uVar10 = *(uint *)(param_1 + 0x14);\n  if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }\n  uVar7 = FUN_00032c60(0x103,"__section_alignment__");\n  uVar7 = FUN_00032be0(0x117,uVar7);\n  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);\n  if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }\nLAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);\n  piVar3 = (int *)(local_3c + 8);\n  while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }\n  if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }\n  return local_3c;\n}" primitive_type (function_declarator "FUN_00055650(int param_1,byte *param_2,int param_3)" identifier (parameter_list "(int param_1,byte *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  char *__s;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  int iVar9;\n  size_t __n;\n  uint uVar10;\n  undefined **ppuVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  char *local_40;\n  int local_3c;\n  byte *local_38;\n  int local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x55659;\n  if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }\n  FUN_00023e00(&local_24);\n  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }\n  if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }\n  uVar10 = *(uint *)(param_1 + 0x14);\n  if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }\n  uVar7 = FUN_00032c60(0x103,"__section_alignment__");\n  uVar7 = FUN_00032be0(0x117,uVar7);\n  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);\n  if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }\nLAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);\n  piVar3 = (int *)(local_3c + 8);\n  while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }\n  if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }\n  return local_3c;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined **ppuVar11;" type_identifier (pointer_declarator "**ppuVar11" * (pointer_declarator "*ppuVar11" * identifier)) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "char *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "byte *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x55659;" (assignment_expression "uStack_14 = 0x55659" identifier = number_literal) ;) (if_statement "if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" if (parenthesized_expression "((DAT_001d13e0 & 3) == 2)" ( (binary_expression "(DAT_001d13e0 & 3) == 2" (parenthesized_expression "(DAT_001d13e0 & 3)" ( (binary_expression "DAT_001d13e0 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }" { (expression_statement "local_40 = (char *)0x0;" (assignment_expression "local_40 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" identifier = identifier) ;) }) (else_clause "else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" else (compound_statement "{\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" { (expression_statement "local_40 = strchr((char *)param_2,0x24);" (assignment_expression "local_40 = strchr((char *)param_2,0x24)" identifier = (call_expression "strchr((char *)param_2,0x24)" identifier (argument_list "((char *)param_2,0x24)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" identifier = identifier) ;) (if_statement "if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }" if (parenthesized_expression "(local_40 != (char *)0x0)" ( (binary_expression "local_40 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }" { (expression_statement "__n = (int)local_40 - (int)param_2;" (assignment_expression "__n = (int)local_40 - (int)param_2" identifier = (binary_expression "(int)local_40 - (int)param_2" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_38 = (byte *)xmalloc(__n + 1);" (assignment_expression "local_38 = (byte *)xmalloc(__n + 1)" identifier = (cast_expression "(byte *)xmalloc(__n + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(local_38,param_2,__n);" (call_expression "memcpy(local_38,param_2,__n)" identifier (argument_list "(local_38,param_2,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_38[__n] = 0;" (assignment_expression "local_38[__n] = 0" (subscript_expression "local_38[__n]" identifier [ identifier ]) = number_literal) ;) })) }))) (expression_statement "FUN_00023e00(&local_24);" (call_expression "FUN_00023e00(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) ))) ;) (if_statement "if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }" if (parenthesized_expression "((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0))" ( (binary_expression "(param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)" ( (comma_expression "local_3c = FUN_000256d0(local_38,0,0), local_3c != 0" (assignment_expression "local_3c = FUN_000256d0(local_38,0,0)" identifier = (call_expression "FUN_000256d0(local_38,0,0)" identifier (argument_list "(local_38,0,0)" ( identifier , number_literal , number_literal )))) , (binary_expression "local_3c != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);" do (compound_statement "{\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    }" { (expression_statement "iVar6 = local_3c;" (assignment_expression "iVar6 = local_3c" identifier = identifier) ;) (if_statement "if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }" if (parenthesized_expression "((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0))))" ( (binary_expression "(*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))" (parenthesized_expression "(*(int *)(local_3c + 0x1c) != 0)" ( (binary_expression "*(int *)(local_3c + 0x1c) != 0" (pointer_expression "*(int *)(local_3c + 0x1c)" * (cast_expression "(int *)(local_3c + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 0x1c)" ( (binary_expression "local_3c + 0x1c" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))" ( (parenthesized_expression "(uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0))" ( (comma_expression "uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" (assignment_expression "uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" identifier = (pointer_expression "*(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" * (cast_expression "(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_3c + 0x1c) + 0x14)" ( (binary_expression "*(int *)(local_3c + 0x1c) + 0x14" (pointer_expression "*(int *)(local_3c + 0x1c)" * (cast_expression "(int *)(local_3c + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 0x1c)" ( (binary_expression "local_3c + 0x1c" identifier + number_literal) )))) + number_literal) ))))) , (binary_expression "uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" (binary_expression "uVar10 == 0" identifier == number_literal) || (parenthesized_expression "(iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" ( (comma_expression "iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0" (assignment_expression "iVar6 = iVar9" identifier = identifier) , (binary_expression "((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0" (parenthesized_expression "((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3)" ( (binary_expression "(uVar10 ^ *(uint *)(param_1 + 0x14)) & 3" (parenthesized_expression "(uVar10 ^ *(uint *)(param_1 + 0x14))" ( (binary_expression "uVar10 ^ *(uint *)(param_1 + 0x14)" identifier ^ (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) & number_literal) )) == number_literal)) )))) )) ))) )) (compound_statement "{\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }" { (expression_statement "FUN_00026550(&local_24,param_1,0,local_3c);" (call_expression "FUN_00026550(&local_24,param_1,0,local_3c)" identifier (argument_list "(&local_24,param_1,0,local_3c)" ( (pointer_expression "&local_24" & identifier) , identifier , number_literal , identifier ))) ;) (goto_statement "goto LAB_00055848;" goto statement_identifier ;) })) (expression_statement "local_3c = FUN_00025b20(local_3c,0);" (assignment_expression "local_3c = FUN_00025b20(local_3c,0)" identifier = (call_expression "FUN_00025b20(local_3c,0)" identifier (argument_list "(local_3c,0)" ( identifier , number_literal )))) ;) (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) ;) (if_statement "if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }" { (expression_statement "FUN_00026550(iVar6 + 8,param_1,0,iVar6);" (call_expression "FUN_00026550(iVar6 + 8,param_1,0,iVar6)" identifier (argument_list "(iVar6 + 8,param_1,0,iVar6)" ( (binary_expression "iVar6 + 8" identifier + number_literal) , identifier , number_literal , identifier ))) ;) (return_statement "return iVar6;" return identifier ;) })) (expression_statement "param_3 = 0x17e;" (assignment_expression "param_3 = 0x17e" identifier = number_literal) ;) })) (if_statement "if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }" if (parenthesized_expression "(DAT_001d0f88 == 0)" ( (binary_expression "DAT_001d0f88 == 0" identifier == number_literal) )) (compound_statement "{\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }" { (expression_statement "ppuVar11 = &PTR_s__text_001cffa0;" (assignment_expression "ppuVar11 = &PTR_s__text_001cffa0" identifier = (pointer_expression "&PTR_s__text_001cffa0" & identifier)) ;) (do_statement "do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);" do (compound_statement "{\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    }" { (if_statement "if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }" if (parenthesized_expression "(*ppuVar11 != (undefined *)0x0)" ( (binary_expression "*ppuVar11 != (undefined *)0x0" (pointer_expression "*ppuVar11" * identifier) != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }" { (expression_statement "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);" (assignment_expression "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0)" identifier = (cast_expression "(undefined *)FUN_000256d0(*ppuVar11,0,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000256d0(*ppuVar11,0,0)" identifier (argument_list "(*ppuVar11,0,0)" ( (pointer_expression "*ppuVar11" * identifier) , number_literal , number_literal ))))) ;) (expression_statement "ppuVar11[2] = puVar5;" (assignment_expression "ppuVar11[2] = puVar5" (subscript_expression "ppuVar11[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }" if (parenthesized_expression "((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0))" ( (binary_expression "(puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)" (parenthesized_expression "(puVar5 != (undefined *)0x0)" ( (binary_expression "puVar5 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(int *)(puVar5 + 0x4c) == 0)" ( (binary_expression "*(int *)(puVar5 + 0x4c) == 0" (pointer_expression "*(int *)(puVar5 + 0x4c)" * (cast_expression "(int *)(puVar5 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x4c)" ( (binary_expression "puVar5 + 0x4c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }" { (expression_statement "*(undefined **)(puVar5 + 0x4c) = ppuVar11[1];" (assignment_expression "*(undefined **)(puVar5 + 0x4c) = ppuVar11[1]" (pointer_expression "*(undefined **)(puVar5 + 0x4c)" * (cast_expression "(undefined **)(puVar5 + 0x4c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x4c)" ( (binary_expression "puVar5 + 0x4c" identifier + number_literal) )))) = (subscript_expression "ppuVar11[1]" identifier [ number_literal ])) ;) })) })) (expression_statement "ppuVar11 = ppuVar11 + 6;" (assignment_expression "ppuVar11 = ppuVar11 + 6" identifier = (binary_expression "ppuVar11 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(ppuVar11 != (undefined **)&DAT_001d0018)" ( (binary_expression "ppuVar11 != (undefined **)&DAT_001d0018" identifier != (cast_expression "(undefined **)&DAT_001d0018" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_001d0018" & identifier))) )) ;) (expression_statement "DAT_001d0f88 = 1;" (assignment_expression "DAT_001d0f88 = 1" identifier = number_literal) ;) })) (expression_statement "uVar10 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x14)" identifier = (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }" if (parenthesized_expression "((DAT_001d13e0 & 3) != 2)" ( (binary_expression "(DAT_001d13e0 & 3) != 2" (parenthesized_expression "(DAT_001d13e0 & 3)" ( (binary_expression "DAT_001d13e0 & 3" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }" { (expression_statement "iVar9 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar9 = *(int *)(param_1 + 0xac)" identifier = (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = param_1;" (assignment_expression "iVar6 = param_1" identifier = identifier) ;) (while_statement "while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }" while (parenthesized_expression "(iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0)" ( (comma_expression "iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0" (assignment_expression "iVar6 = bfd_get_next_section_by_name(iVar9,iVar6)" identifier = (call_expression "bfd_get_next_section_by_name(iVar9,iVar6)" identifier (argument_list "(iVar9,iVar6)" ( identifier , identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) )) (compound_statement "{\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }" { (expression_statement "iVar9 = *(int *)(iVar6 + 0xac);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0xac)" identifier = (pointer_expression "*(int *)(iVar6 + 0xac)" * (cast_expression "(int *)(iVar6 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xac)" ( (binary_expression "iVar6 + 0xac" identifier + number_literal) ))))) ;) (if_statement "if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }" if (parenthesized_expression "((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         )" ( (binary_expression "(((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))" (parenthesized_expression "(((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0))" ( (binary_expression "((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)" (parenthesized_expression "((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))" ( (binary_expression "(*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)" (parenthesized_expression "(*(int *)(iVar6 + 0x54) == 0)" ( (binary_expression "*(int *)(iVar6 + 0x54) == 0" (pointer_expression "*(int *)(iVar6 + 0x54)" * (cast_expression "(int *)(iVar6 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x54)" ( (binary_expression "iVar6 + 0x54" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)" ( (comma_expression "uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0" (assignment_expression "uVar1 = *(uint *)(iVar6 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) ))))) , (binary_expression "((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0" (binary_expression "((uVar10 ^ uVar1) & 3) == 0" (parenthesized_expression "((uVar10 ^ uVar1) & 3)" ( (binary_expression "(uVar10 ^ uVar1) & 3" (parenthesized_expression "(uVar10 ^ uVar1)" ( (binary_expression "uVar10 ^ uVar1" identifier ^ identifier) )) & number_literal) )) == number_literal) && (binary_expression "(uVar1 & 0x8000) == 0" (parenthesized_expression "(uVar1 & 0x8000)" ( (binary_expression "uVar1 & 0x8000" identifier & number_literal) )) == number_literal))) ))) )) && (parenthesized_expression "((*(byte *)(iVar9 + 0x29) & 8) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x29) & 8) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x29) & 8)" ( (binary_expression "*(byte *)(iVar9 + 0x29) & 8" (pointer_expression "*(byte *)(iVar9 + 0x29)" * (cast_expression "(byte *)(iVar9 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x29)" ( (binary_expression "iVar9 + 0x29" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))" ( (parenthesized_expression "(*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0))" ( (binary_expression "*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)" (binary_expression "*(int *)(iVar9 + 0xa4) != 0" (pointer_expression "*(int *)(iVar9 + 0xa4)" * (cast_expression "(int *)(iVar9 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xa4)" ( (binary_expression "iVar9 + 0xa4" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10)" ( (binary_expression "*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10" (pointer_expression "*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24)" * (cast_expression "(byte *)(*(int *)(iVar9 + 0xa4) + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0xa4) + 0x24)" ( (binary_expression "*(int *)(iVar9 + 0xa4) + 0x24" (pointer_expression "*(int *)(iVar9 + 0xa4)" * (cast_expression "(int *)(iVar9 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xa4)" ( (binary_expression "iVar9 + 0xa4" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }" { (expression_statement "uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;" (assignment_expression "uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8" identifier = (binary_expression "(uVar1 ^ 8 | uVar10 ^ 8) ^ 8" (parenthesized_expression "(uVar1 ^ 8 | uVar10 ^ 8)" ( (binary_expression "uVar1 ^ 8 | uVar10 ^ 8" (binary_expression "uVar1 ^ 8" identifier ^ number_literal) | (binary_expression "uVar10 ^ 8" identifier ^ number_literal)) )) ^ number_literal)) ;) })) })) })) (if_statement "if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" if (parenthesized_expression "((uVar10 & 1) == 0)" ( (binary_expression "(uVar10 & 1) == 0" (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }" { (expression_statement "ppuVar11 = (undefined **)0x0;" (assignment_expression "ppuVar11 = (undefined **)0x0" identifier = (cast_expression "(undefined **)0x0" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "puVar5 = (undefined *)0x0;" (assignment_expression "puVar5 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" else (compound_statement "{\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" { (expression_statement "ppuVar11 = &PTR_s__bss_001d0000;" (assignment_expression "ppuVar11 = &PTR_s__bss_001d0000" identifier = (pointer_expression "&PTR_s__bss_001d0000" & identifier)) ;) (if_statement "if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }" if (parenthesized_expression "(((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0))" ( (binary_expression "((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)" (parenthesized_expression "((uVar10 & 0x102) != 0)" ( (binary_expression "(uVar10 & 0x102) != 0" (parenthesized_expression "(uVar10 & 0x102)" ( (binary_expression "uVar10 & 0x102" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)" ( (comma_expression "ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0" (assignment_expression "ppuVar11 = &PTR_s__data_001cffe8" identifier = (pointer_expression "&PTR_s__data_001cffe8" & identifier)) , (binary_expression "(uVar10 & 8) != 0" (parenthesized_expression "(uVar10 & 8)" ( (binary_expression "uVar10 & 8" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }" { (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar15 = (uVar10 & 0x10) == 0;" (assignment_expression "bVar15 = (uVar10 & 0x10) == 0" identifier = (binary_expression "(uVar10 & 0x10) == 0" (parenthesized_expression "(uVar10 & 0x10)" ( (binary_expression "uVar10 & 0x10" identifier & number_literal) )) == number_literal)) ;) (expression_statement "ppuVar11 = &PTR_s__text_001cffa0;" (assignment_expression "ppuVar11 = &PTR_s__text_001cffa0" identifier = (pointer_expression "&PTR_s__text_001cffa0" & identifier)) ;) (if_statement "if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }" { (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = local_38;" (assignment_expression "pbVar12 = local_38" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".idata$";" (assignment_expression "pbVar13 = (byte *)".idata$"" identifier = (cast_expression "(byte *)".idata$"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".idata$"" " string_content "))) ;) (do_statement "do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar12 < *pbVar13;" (assignment_expression "bVar14 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "ppuVar11 = &PTR_s__idata_001cffb8;" (assignment_expression "ppuVar11 = &PTR_s__idata_001cffb8" identifier = (pointer_expression "&PTR_s__idata_001cffb8" & identifier)) ;) (if_statement "if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }" if (parenthesized_expression "((!bVar14 && !bVar15) != bVar14)" ( (binary_expression "(!bVar14 && !bVar15) != bVar14" (parenthesized_expression "(!bVar14 && !bVar15)" ( (binary_expression "!bVar14 && !bVar15" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (compound_statement "{\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }" { (expression_statement "ppuVar11 = &PTR_s__rdata_001cffd0;" (assignment_expression "ppuVar11 = &PTR_s__rdata_001cffd0" identifier = (pointer_expression "&PTR_s__rdata_001cffd0" & identifier)) ;) })) })) })) (expression_statement "puVar5 = ppuVar11[2];" (assignment_expression "puVar5 = ppuVar11[2]" identifier = (subscript_expression "ppuVar11[2]" identifier [ number_literal ])) ;) (if_statement "if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }" if (parenthesized_expression "(ppuVar11[2] == (undefined *)0x0)" ( (binary_expression "ppuVar11[2] == (undefined *)0x0" (subscript_expression "ppuVar11[2]" identifier [ number_literal ]) == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }" { (expression_statement "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);" (assignment_expression "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0)" identifier = (cast_expression "(undefined *)FUN_000256d0(*ppuVar11,0,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000256d0(*ppuVar11,0,0)" identifier (argument_list "(*ppuVar11,0,0)" ( (pointer_expression "*ppuVar11" * identifier) , number_literal , number_literal ))))) ;) (expression_statement "ppuVar11[2] = puVar5;" (assignment_expression "ppuVar11[2] = puVar5" (subscript_expression "ppuVar11[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }" if (parenthesized_expression "((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0))" ( (binary_expression "(puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)" (parenthesized_expression "(puVar5 == (undefined *)0x0)" ( (binary_expression "puVar5 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)" ( (comma_expression "puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0" (assignment_expression "puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" identifier = (cast_expression "(undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" identifier (argument_list "(param_1,uVar10,ppuVar11 + 2,0)" ( identifier , identifier , (binary_expression "ppuVar11 + 2" identifier + number_literal) , number_literal ))))) , (binary_expression "puVar5 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        puVar5 = DAT_001d13a0;\n      }" { (expression_statement "puVar5 = DAT_001d13a0;" (assignment_expression "puVar5 = DAT_001d13a0" identifier = identifier) ;) })) })) }))) (expression_statement "uVar7 = FUN_00032c60(0x103,"__section_alignment__");" (assignment_expression "uVar7 = FUN_00032c60(0x103,"__section_alignment__")" identifier = (call_expression "FUN_00032c60(0x103,"__section_alignment__")" identifier (argument_list "(0x103,"__section_alignment__")" ( number_literal , (string_literal ""__section_alignment__"" " string_content ") )))) ;) (expression_statement "uVar7 = FUN_00032be0(0x117,uVar7);" (assignment_expression "uVar7 = FUN_00032be0(0x117,uVar7)" identifier = (call_expression "FUN_00032be0(0x117,uVar7)" identifier (argument_list "(0x117,uVar7)" ( number_literal , identifier )))) ;) (expression_statement "local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);" (assignment_expression "local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" identifier = (call_expression "FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" identifier (argument_list "(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" ( identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }" if (parenthesized_expression "((DAT_001d13e0 & 3) == 2)" ( (binary_expression "(DAT_001d13e0 & 3) == 2" (parenthesized_expression "(DAT_001d13e0 & 3)" ( (binary_expression "DAT_001d13e0 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }" { (expression_statement "uVar7 = *(undefined4 *)(param_1 + 0x58);" (assignment_expression "uVar7 = *(undefined4 *)(param_1 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(local_3c + 0x44) = uVar7;" (assignment_expression "*(undefined4 *)(local_3c + 0x44) = uVar7" (pointer_expression "*(undefined4 *)(local_3c + 0x44)" * (cast_expression "(undefined4 *)(local_3c + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 0x44)" ( (binary_expression "local_3c + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;" (assignment_expression "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7" (pointer_expression "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58)" * (cast_expression "(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_3c + 0x1c) + 0x58)" ( (binary_expression "*(int *)(local_3c + 0x1c) + 0x58" (pointer_expression "*(int *)(local_3c + 0x1c)" * (cast_expression "(int *)(local_3c + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 0x1c)" ( (binary_expression "local_3c + 0x1c" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) })) (labeled_statement "LAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);" statement_identifier : (expression_statement "piVar4 = *(int **)(local_3c + 8);" (assignment_expression "piVar4 = *(int **)(local_3c + 8)" identifier = (pointer_expression "*(int **)(local_3c + 8)" * (cast_expression "(int **)(local_3c + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_3c + 8)" ( (binary_expression "local_3c + 8" identifier + number_literal) ))))) ;)) (expression_statement "piVar3 = (int *)(local_3c + 8);" (assignment_expression "piVar3 = (int *)(local_3c + 8)" identifier = (cast_expression "(int *)(local_3c + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 8)" ( (binary_expression "local_3c + 8" identifier + number_literal) )))) ;) (while_statement "while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }" while (parenthesized_expression "(piVar2 = piVar4, piVar2 != (int *)0x0)" ( (comma_expression "piVar2 = piVar4, piVar2 != (int *)0x0" (assignment_expression "piVar2 = piVar4" identifier = identifier) , (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }" { (if_statement "if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }" if (parenthesized_expression "(piVar2[1] == 5)" ( (binary_expression "piVar2[1] == 5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }" { (expression_statement "__s = *(char **)piVar2[2];" (assignment_expression "__s = *(char **)piVar2[2]" identifier = (pointer_expression "*(char **)piVar2[2]" * (cast_expression "(char **)piVar2[2]" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar2[2]" identifier [ number_literal ])))) ;) (expression_statement "pcVar8 = strchr(__s,0x24);" (assignment_expression "pcVar8 = strchr(__s,0x24)" identifier = (call_expression "strchr(__s,0x24)" identifier (argument_list "(__s,0x24)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;" if (parenthesized_expression "((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0))))" ( (binary_expression "(pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))" (parenthesized_expression "(pcVar8 != (char *)0x0)" ( (binary_expression "pcVar8 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))" ( (parenthesized_expression "(local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0))" ( (binary_expression "local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)" (binary_expression "local_40 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)" ( (comma_expression "iVar9 = strcmp((char *)param_2,__s), iVar9 < 0" (assignment_expression "iVar9 = strcmp((char *)param_2,__s)" identifier = (call_expression "strcmp((char *)param_2,__s)" identifier (argument_list "((char *)param_2,__s)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) , (binary_expression "iVar9 < 0" identifier < number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) })) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (expression_statement "piVar4 = (int *)*piVar2;" (assignment_expression "piVar4 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) })) (if_statement "if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }" { (expression_statement "*local_20 = piVar2;" (assignment_expression "*local_20 = piVar2" (pointer_expression "*local_20" * identifier) = identifier) ;) (expression_statement "*piVar3 = local_24;" (assignment_expression "*piVar3 = local_24" (pointer_expression "*piVar3" * identifier) = identifier) ;) })) (return_statement "return local_3c;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) , (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) & LIT) )) == LIT)) )))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT , IDENT ))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , LIT , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ IDENT) )) & LIT) )) == LIT) && (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT))) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT ^ LIT) | (binary_expression IDENT ^ LIT)) )) ^ LIT)) ;) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression & IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , LIT , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , LIT ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = IDENT) ;) })) (labeled_statement statement_identifier : (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT )))) , (binary_expression IDENT < LIT)) ))) )) ))) )) (break_statement break ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_00055650(int param_1,byte *param_2,int param_3)\n\n{\n  uint uVar1;\n  char *__s;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  int iVar9;\n  size_t __n;\n  uint uVar10;\n  undefined **ppuVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  char *local_40;\n  int local_3c;\n  byte *local_38;\n  int local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x55659;\n  if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }\n  FUN_00023e00(&local_24);\n  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }\n  if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }\n  uVar10 = *(uint *)(param_1 + 0x14);\n  if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }\n  uVar7 = FUN_00032c60(0x103,"__section_alignment__");\n  uVar7 = FUN_00032be0(0x117,uVar7);\n  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);\n  if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }\nLAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);\n  piVar3 = (int *)(local_3c + 8);\n  while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }\n  if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }\n  return local_3c;\n}" (primitive_type "int") (function_declarator "FUN_00055650(int param_1,byte *param_2,int param_3)" (identifier "FUN_00055650") (parameter_list "(int param_1,byte *param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  char *__s;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  char *pcVar8;\n  int iVar9;\n  size_t __n;\n  uint uVar10;\n  undefined **ppuVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  char *local_40;\n  int local_3c;\n  byte *local_38;\n  int local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x55659;\n  if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }\n  FUN_00023e00(&local_24);\n  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }\n  if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }\n  uVar10 = *(uint *)(param_1 + 0x14);\n  if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }\n  if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }\n  uVar7 = FUN_00032c60(0x103,"__section_alignment__");\n  uVar7 = FUN_00032be0(0x117,uVar7);\n  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);\n  if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }\nLAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);\n  piVar3 = (int *)(local_3c + 8);\n  while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }\n  if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }\n  return local_3c;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined **ppuVar11;" (type_identifier "undefined") (pointer_declarator "**ppuVar11" (* "*") (pointer_declarator "*ppuVar11" (* "*") (identifier "ppuVar11"))) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "byte bVar16;" (type_identifier "byte") (identifier "bVar16") (; ";")) (declaration "char *local_40;" (primitive_type "char") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "byte *local_38;" (type_identifier "byte") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "undefined4 *local_20;" (type_identifier "undefined4") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" (identifier "bVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x55659;" (assignment_expression "uStack_14 = 0x55659" (identifier "uStack_14") (= "=") (number_literal "0x55659")) (; ";")) (if_statement "if ((DAT_001d13e0 & 3) == 2) {\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }\n  else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" (if "if") (parenthesized_expression "((DAT_001d13e0 & 3) == 2)" (( "(") (binary_expression "(DAT_001d13e0 & 3) == 2" (parenthesized_expression "(DAT_001d13e0 & 3)" (( "(") (binary_expression "DAT_001d13e0 & 3" (identifier "DAT_001d13e0") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    local_40 = (char *)0x0;\n    local_38 = param_2;\n  }" ({ "{") (expression_statement "local_40 = (char *)0x0;" (assignment_expression "local_40 = (char *)0x0" (identifier "local_40") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" (identifier "local_38") (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else {\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" (else "else") (compound_statement "{\n    local_40 = strchr((char *)param_2,0x24);\n    local_38 = param_2;\n    if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }\n  }" ({ "{") (expression_statement "local_40 = strchr((char *)param_2,0x24);" (assignment_expression "local_40 = strchr((char *)param_2,0x24)" (identifier "local_40") (= "=") (call_expression "strchr((char *)param_2,0x24)" (identifier "strchr") (argument_list "((char *)param_2,0x24)" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) (, ",") (number_literal "0x24") () ")")))) (; ";")) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" (identifier "local_38") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (local_40 != (char *)0x0) {\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }" (if "if") (parenthesized_expression "(local_40 != (char *)0x0)" (( "(") (binary_expression "local_40 != (char *)0x0" (identifier "local_40") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      __n = (int)local_40 - (int)param_2;\n      local_38 = (byte *)xmalloc(__n + 1);\n      memcpy(local_38,param_2,__n);\n      local_38[__n] = 0;\n    }" ({ "{") (expression_statement "__n = (int)local_40 - (int)param_2;" (assignment_expression "__n = (int)local_40 - (int)param_2" (identifier "__n") (= "=") (binary_expression "(int)local_40 - (int)param_2" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (expression_statement "local_38 = (byte *)xmalloc(__n + 1);" (assignment_expression "local_38 = (byte *)xmalloc(__n + 1)" (identifier "local_38") (= "=") (cast_expression "(byte *)xmalloc(__n + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(__n + 1)" (identifier "xmalloc") (argument_list "(__n + 1)" (( "(") (binary_expression "__n + 1" (identifier "__n") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "memcpy(local_38,param_2,__n);" (call_expression "memcpy(local_38,param_2,__n)" (identifier "memcpy") (argument_list "(local_38,param_2,__n)" (( "(") (identifier "local_38") (, ",") (identifier "param_2") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "local_38[__n] = 0;" (assignment_expression "local_38[__n] = 0" (subscript_expression "local_38[__n]" (identifier "local_38") ([ "[") (identifier "__n") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_00023e00(&local_24);" (call_expression "FUN_00023e00(&local_24)" (identifier "FUN_00023e00") (argument_list "(&local_24)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")"))) (; ";")) (if_statement "if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }" (if "if") (parenthesized_expression "((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0))" (( "(") (binary_expression "(param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)" (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)" (( "(") (comma_expression "local_3c = FUN_000256d0(local_38,0,0), local_3c != 0" (assignment_expression "local_3c = FUN_000256d0(local_38,0,0)" (identifier "local_3c") (= "=") (call_expression "FUN_000256d0(local_38,0,0)" (identifier "FUN_000256d0") (argument_list "(local_38,0,0)" (( "(") (identifier "local_38") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    iVar9 = 0;\n    do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);\n    if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }\n    param_3 = 0x17e;\n  }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    } while (local_3c != 0);" (do "do") (compound_statement "{\n      iVar6 = local_3c;\n      if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }\n      local_3c = FUN_00025b20(local_3c,0);\n      iVar9 = iVar6;\n    }" ({ "{") (expression_statement "iVar6 = local_3c;" (assignment_expression "iVar6 = local_3c" (identifier "iVar6") (= "=") (identifier "local_3c")) (; ";")) (if_statement "if ((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }" (if "if") (parenthesized_expression "((*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0))))" (( "(") (binary_expression "(*(int *)(local_3c + 0x1c) != 0) &&\n         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))" (parenthesized_expression "(*(int *)(local_3c + 0x1c) != 0)" (( "(") (binary_expression "*(int *)(local_3c + 0x1c) != 0" (pointer_expression "*(int *)(local_3c + 0x1c)" (* "*") (cast_expression "(int *)(local_3c + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + 0x1c)" (( "(") (binary_expression "local_3c + 0x1c" (identifier "local_3c") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))" (( "(") (parenthesized_expression "(uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0))" (( "(") (comma_expression "uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" (assignment_expression "uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" (* "*") (cast_expression "(uint *)(*(int *)(local_3c + 0x1c) + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_3c + 0x1c) + 0x14)" (( "(") (binary_expression "*(int *)(local_3c + 0x1c) + 0x14" (pointer_expression "*(int *)(local_3c + 0x1c)" (* "*") (cast_expression "(int *)(local_3c + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + 0x1c)" (( "(") (binary_expression "local_3c + 0x1c" (identifier "local_3c") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "0x14")) () ")"))))) (, ",") (binary_expression "uVar10 == 0 ||\n          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)" (( "(") (comma_expression "iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0" (assignment_expression "iVar6 = iVar9" (identifier "iVar6") (= "=") (identifier "iVar9")) (, ",") (binary_expression "((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0" (parenthesized_expression "((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3)" (( "(") (binary_expression "(uVar10 ^ *(uint *)(param_1 + 0x14)) & 3" (parenthesized_expression "(uVar10 ^ *(uint *)(param_1 + 0x14))" (( "(") (binary_expression "uVar10 ^ *(uint *)(param_1 + 0x14)" (identifier "uVar10") (^ "^") (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n        FUN_00026550(&local_24,param_1,0,local_3c);\n        goto LAB_00055848;\n      }" ({ "{") (expression_statement "FUN_00026550(&local_24,param_1,0,local_3c);" (call_expression "FUN_00026550(&local_24,param_1,0,local_3c)" (identifier "FUN_00026550") (argument_list "(&local_24,param_1,0,local_3c)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "local_3c") () ")"))) (; ";")) (goto_statement "goto LAB_00055848;" (goto "goto") (statement_identifier "LAB_00055848") (; ";")) (} "}"))) (expression_statement "local_3c = FUN_00025b20(local_3c,0);" (assignment_expression "local_3c = FUN_00025b20(local_3c,0)" (identifier "local_3c") (= "=") (call_expression "FUN_00025b20(local_3c,0)" (identifier "FUN_00025b20") (argument_list "(local_3c,0)" (( "(") (identifier "local_3c") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" (identifier "iVar9") (= "=") (identifier "iVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (iVar6 != 0) {\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00026550(iVar6 + 8,param_1,0,iVar6);\n      return iVar6;\n    }" ({ "{") (expression_statement "FUN_00026550(iVar6 + 8,param_1,0,iVar6);" (call_expression "FUN_00026550(iVar6 + 8,param_1,0,iVar6)" (identifier "FUN_00026550") (argument_list "(iVar6 + 8,param_1,0,iVar6)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) (, ",") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "iVar6") () ")"))) (; ";")) (return_statement "return iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}"))) (expression_statement "param_3 = 0x17e;" (assignment_expression "param_3 = 0x17e" (identifier "param_3") (= "=") (number_literal "0x17e")) (; ";")) (} "}"))) (if_statement "if (DAT_001d0f88 == 0) {\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }" (if "if") (parenthesized_expression "(DAT_001d0f88 == 0)" (( "(") (binary_expression "DAT_001d0f88 == 0" (identifier "DAT_001d0f88") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    ppuVar11 = &PTR_s__text_001cffa0;\n    do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);\n    DAT_001d0f88 = 1;\n  }" ({ "{") (expression_statement "ppuVar11 = &PTR_s__text_001cffa0;" (assignment_expression "ppuVar11 = &PTR_s__text_001cffa0" (identifier "ppuVar11") (= "=") (pointer_expression "&PTR_s__text_001cffa0" (& "&") (identifier "PTR_s__text_001cffa0"))) (; ";")) (do_statement "do {\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    } while (ppuVar11 != (undefined **)&DAT_001d0018);" (do "do") (compound_statement "{\n      if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }\n      ppuVar11 = ppuVar11 + 6;\n    }" ({ "{") (if_statement "if (*ppuVar11 != (undefined *)0x0) {\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }" (if "if") (parenthesized_expression "(*ppuVar11 != (undefined *)0x0)" (( "(") (binary_expression "*ppuVar11 != (undefined *)0x0" (pointer_expression "*ppuVar11" (* "*") (identifier "ppuVar11")) (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n        ppuVar11[2] = puVar5;\n        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }\n      }" ({ "{") (expression_statement "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);" (assignment_expression "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0)" (identifier "puVar5") (= "=") (cast_expression "(undefined *)FUN_000256d0(*ppuVar11,0,0)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000256d0(*ppuVar11,0,0)" (identifier "FUN_000256d0") (argument_list "(*ppuVar11,0,0)" (( "(") (pointer_expression "*ppuVar11" (* "*") (identifier "ppuVar11")) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "ppuVar11[2] = puVar5;" (assignment_expression "ppuVar11[2] = puVar5" (subscript_expression "ppuVar11[2]" (identifier "ppuVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (if_statement "if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }" (if "if") (parenthesized_expression "((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0))" (( "(") (binary_expression "(puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)" (parenthesized_expression "(puVar5 != (undefined *)0x0)" (( "(") (binary_expression "puVar5 != (undefined *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(puVar5 + 0x4c) == 0)" (( "(") (binary_expression "*(int *)(puVar5 + 0x4c) == 0" (pointer_expression "*(int *)(puVar5 + 0x4c)" (* "*") (cast_expression "(int *)(puVar5 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 0x4c)" (( "(") (binary_expression "puVar5 + 0x4c" (identifier "puVar5") (+ "+") (number_literal "0x4c")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];\n        }" ({ "{") (expression_statement "*(undefined **)(puVar5 + 0x4c) = ppuVar11[1];" (assignment_expression "*(undefined **)(puVar5 + 0x4c) = ppuVar11[1]" (pointer_expression "*(undefined **)(puVar5 + 0x4c)" (* "*") (cast_expression "(undefined **)(puVar5 + 0x4c)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + 0x4c)" (( "(") (binary_expression "puVar5 + 0x4c" (identifier "puVar5") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (subscript_expression "ppuVar11[1]" (identifier "ppuVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "ppuVar11 = ppuVar11 + 6;" (assignment_expression "ppuVar11 = ppuVar11 + 6" (identifier "ppuVar11") (= "=") (binary_expression "ppuVar11 + 6" (identifier "ppuVar11") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(ppuVar11 != (undefined **)&DAT_001d0018)" (( "(") (binary_expression "ppuVar11 != (undefined **)&DAT_001d0018" (identifier "ppuVar11") (!= "!=") (cast_expression "(undefined **)&DAT_001d0018" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_001d0018" (& "&") (identifier "DAT_001d0018")))) () ")")) (; ";")) (expression_statement "DAT_001d0f88 = 1;" (assignment_expression "DAT_001d0f88 = 1" (identifier "DAT_001d0f88") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar10 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x14)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((DAT_001d13e0 & 3) != 2) {\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((DAT_001d13e0 & 3) != 2)" (( "(") (binary_expression "(DAT_001d13e0 & 3) != 2" (parenthesized_expression "(DAT_001d13e0 & 3)" (( "(") (binary_expression "DAT_001d13e0 & 3" (identifier "DAT_001d13e0") (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    iVar9 = *(int *)(param_1 + 0xac);\n    iVar6 = param_1;\n    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }\n  }" ({ "{") (expression_statement "iVar9 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar9 = *(int *)(param_1 + 0xac)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 0xac)" (* "*") (cast_expression "(int *)(param_1 + 0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "iVar6 = param_1;" (assignment_expression "iVar6 = param_1" (identifier "iVar6") (= "=") (identifier "param_1")) (; ";")) (while_statement "while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }" (while "while") (parenthesized_expression "(iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0)" (( "(") (comma_expression "iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0" (assignment_expression "iVar6 = bfd_get_next_section_by_name(iVar9,iVar6)" (identifier "iVar6") (= "=") (call_expression "bfd_get_next_section_by_name(iVar9,iVar6)" (identifier "bfd_get_next_section_by_name") (argument_list "(iVar9,iVar6)" (( "(") (identifier "iVar9") (, ",") (identifier "iVar6") () ")")))) (, ",") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n      iVar9 = *(int *)(iVar6 + 0xac);\n      if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }\n    }" ({ "{") (expression_statement "iVar9 = *(int *)(iVar6 + 0xac);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0xac)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar6 + 0xac)" (* "*") (cast_expression "(int *)(iVar6 + 0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xac)" (( "(") (binary_expression "iVar6 + 0xac" (identifier "iVar6") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (if_statement "if ((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         ) {\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }" (if "if") (parenthesized_expression "((((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))\n         )" (( "(") (binary_expression "(((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&\n         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))" (parenthesized_expression "(((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0))" (( "(") (binary_expression "((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))\n          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)" (parenthesized_expression "((*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))" (( "(") (binary_expression "(*(int *)(iVar6 + 0x54) == 0) &&\n           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)" (parenthesized_expression "(*(int *)(iVar6 + 0x54) == 0)" (( "(") (binary_expression "*(int *)(iVar6 + 0x54) == 0" (pointer_expression "*(int *)(iVar6 + 0x54)" (* "*") (cast_expression "(int *)(iVar6 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x54)" (( "(") (binary_expression "iVar6 + 0x54" (identifier "iVar6") (+ "+") (number_literal "0x54")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0)" (( "(") (comma_expression "uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0" (assignment_expression "uVar1 = *(uint *)(iVar6 + 0x14)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")"))))) (, ",") (binary_expression "((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0" (binary_expression "((uVar10 ^ uVar1) & 3) == 0" (parenthesized_expression "((uVar10 ^ uVar1) & 3)" (( "(") (binary_expression "(uVar10 ^ uVar1) & 3" (parenthesized_expression "(uVar10 ^ uVar1)" (( "(") (binary_expression "uVar10 ^ uVar1" (identifier "uVar10") (^ "^") (identifier "uVar1")) () ")")) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uVar1 & 0x8000) == 0" (parenthesized_expression "(uVar1 & 0x8000)" (( "(") (binary_expression "uVar1 & 0x8000" (identifier "uVar1") (& "&") (number_literal "0x8000")) () ")")) (== "==") (number_literal "0")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(iVar9 + 0x29) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x29) & 8) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x29) & 8)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x29) & 8" (pointer_expression "*(byte *)(iVar9 + 0x29)" (* "*") (cast_expression "(byte *)(iVar9 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x29)" (( "(") (binary_expression "iVar9 + 0x29" (identifier "iVar9") (+ "+") (number_literal "0x29")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))" (( "(") (parenthesized_expression "(*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0))" (( "(") (binary_expression "*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)" (binary_expression "*(int *)(iVar9 + 0xa4) != 0" (pointer_expression "*(int *)(iVar9 + 0xa4)" (* "*") (cast_expression "(int *)(iVar9 + 0xa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xa4)" (( "(") (binary_expression "iVar9 + 0xa4" (identifier "iVar9") (+ "+") (number_literal "0xa4")) () ")")))) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10)" (( "(") (binary_expression "*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10" (pointer_expression "*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24)" (* "*") (cast_expression "(byte *)(*(int *)(iVar9 + 0xa4) + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar9 + 0xa4) + 0x24)" (( "(") (binary_expression "*(int *)(iVar9 + 0xa4) + 0x24" (pointer_expression "*(int *)(iVar9 + 0xa4)" (* "*") (cast_expression "(int *)(iVar9 + 0xa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xa4)" (( "(") (binary_expression "iVar9 + 0xa4" (identifier "iVar9") (+ "+") (number_literal "0xa4")) () ")")))) (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;\n      }" ({ "{") (expression_statement "uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;" (assignment_expression "uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8" (identifier "uVar10") (= "=") (binary_expression "(uVar1 ^ 8 | uVar10 ^ 8) ^ 8" (parenthesized_expression "(uVar1 ^ 8 | uVar10 ^ 8)" (( "(") (binary_expression "uVar1 ^ 8 | uVar10 ^ 8" (binary_expression "uVar1 ^ 8" (identifier "uVar1") (^ "^") (number_literal "8")) (| "|") (binary_expression "uVar10 ^ 8" (identifier "uVar10") (^ "^") (number_literal "8"))) () ")")) (^ "^") (number_literal "8"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (if_statement "if ((uVar10 & 1) == 0) {\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }\n  else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((uVar10 & 1) == 0)" (( "(") (binary_expression "(uVar10 & 1) == 0" (parenthesized_expression "(uVar10 & 1)" (( "(") (binary_expression "uVar10 & 1" (identifier "uVar10") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    ppuVar11 = (undefined **)0x0;\n    puVar5 = (undefined *)0x0;\n  }" ({ "{") (expression_statement "ppuVar11 = (undefined **)0x0;" (assignment_expression "ppuVar11 = (undefined **)0x0" (identifier "ppuVar11") (= "=") (cast_expression "(undefined **)0x0" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar5 = (undefined *)0x0;" (assignment_expression "puVar5 = (undefined *)0x0" (identifier "puVar5") (= "=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" (else "else") (compound_statement "{\n    ppuVar11 = &PTR_s__bss_001d0000;\n    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }\n    puVar5 = ppuVar11[2];\n    if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }\n  }" ({ "{") (expression_statement "ppuVar11 = &PTR_s__bss_001d0000;" (assignment_expression "ppuVar11 = &PTR_s__bss_001d0000" (identifier "ppuVar11") (= "=") (pointer_expression "&PTR_s__bss_001d0000" (& "&") (identifier "PTR_s__bss_001d0000"))) (; ";")) (if_statement "if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0))" (( "(") (binary_expression "((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)" (parenthesized_expression "((uVar10 & 0x102) != 0)" (( "(") (binary_expression "(uVar10 & 0x102) != 0" (parenthesized_expression "(uVar10 & 0x102)" (( "(") (binary_expression "uVar10 & 0x102" (identifier "uVar10") (& "&") (number_literal "0x102")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)" (( "(") (comma_expression "ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0" (assignment_expression "ppuVar11 = &PTR_s__data_001cffe8" (identifier "ppuVar11") (= "=") (pointer_expression "&PTR_s__data_001cffe8" (& "&") (identifier "PTR_s__data_001cffe8"))) (, ",") (binary_expression "(uVar10 & 8) != 0" (parenthesized_expression "(uVar10 & 8)" (( "(") (binary_expression "uVar10 & 8" (identifier "uVar10") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      bVar14 = false;\n      bVar15 = (uVar10 & 0x10) == 0;\n      ppuVar11 = &PTR_s__text_001cffa0;\n      if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }\n    }" ({ "{") (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (uVar10 & 0x10) == 0;" (assignment_expression "bVar15 = (uVar10 & 0x10) == 0" (identifier "bVar15") (= "=") (binary_expression "(uVar10 & 0x10) == 0" (parenthesized_expression "(uVar10 & 0x10)" (( "(") (binary_expression "uVar10 & 0x10" (identifier "uVar10") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "ppuVar11 = &PTR_s__text_001cffa0;" (assignment_expression "ppuVar11 = &PTR_s__text_001cffa0" (identifier "ppuVar11") (= "=") (pointer_expression "&PTR_s__text_001cffa0" (& "&") (identifier "PTR_s__text_001cffa0"))) (; ";")) (if_statement "if (bVar15) {\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n        iVar9 = 7;\n        pbVar12 = local_38;\n        pbVar13 = (byte *)".idata$";\n        do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);\n        ppuVar11 = &PTR_s__idata_001cffb8;\n        if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }\n      }" ({ "{") (expression_statement "iVar9 = 7;" (assignment_expression "iVar9 = 7" (identifier "iVar9") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar12 = local_38;" (assignment_expression "pbVar12 = local_38" (identifier "pbVar12") (= "=") (identifier "local_38")) (; ";")) (expression_statement "pbVar13 = (byte *)".idata$";" (assignment_expression "pbVar13 = (byte *)".idata$"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".idata$"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".idata$"" (" """) (string_content ".idata$") (" """)))) (; ";")) (do_statement "do {\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (iVar9 == 0) break;\n          iVar9 = iVar9 + -1;\n          bVar14 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar12 < *pbVar13;" (assignment_expression "bVar14 = *pbVar12 < *pbVar13" (identifier "bVar14") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar16 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar16 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "ppuVar11 = &PTR_s__idata_001cffb8;" (assignment_expression "ppuVar11 = &PTR_s__idata_001cffb8" (identifier "ppuVar11") (= "=") (pointer_expression "&PTR_s__idata_001cffb8" (& "&") (identifier "PTR_s__idata_001cffb8"))) (; ";")) (if_statement "if ((!bVar14 && !bVar15) != bVar14) {\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }" (if "if") (parenthesized_expression "((!bVar14 && !bVar15) != bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar15) != bVar14" (parenthesized_expression "(!bVar14 && !bVar15)" (( "(") (binary_expression "!bVar14 && !bVar15" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (!= "!=") (identifier "bVar14")) () ")")) (compound_statement "{\n          ppuVar11 = &PTR_s__rdata_001cffd0;\n        }" ({ "{") (expression_statement "ppuVar11 = &PTR_s__rdata_001cffd0;" (assignment_expression "ppuVar11 = &PTR_s__rdata_001cffd0" (identifier "ppuVar11") (= "=") (pointer_expression "&PTR_s__rdata_001cffd0" (& "&") (identifier "PTR_s__rdata_001cffd0"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "puVar5 = ppuVar11[2];" (assignment_expression "puVar5 = ppuVar11[2]" (identifier "puVar5") (= "=") (subscript_expression "ppuVar11[2]" (identifier "ppuVar11") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (ppuVar11[2] == (undefined *)0x0) {\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }" (if "if") (parenthesized_expression "(ppuVar11[2] == (undefined *)0x0)" (( "(") (binary_expression "ppuVar11[2] == (undefined *)0x0" (subscript_expression "ppuVar11[2]" (identifier "ppuVar11") ([ "[") (number_literal "2") (] "]")) (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);\n      ppuVar11[2] = puVar5;\n      if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }\n    }" ({ "{") (expression_statement "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);" (assignment_expression "puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0)" (identifier "puVar5") (= "=") (cast_expression "(undefined *)FUN_000256d0(*ppuVar11,0,0)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000256d0(*ppuVar11,0,0)" (identifier "FUN_000256d0") (argument_list "(*ppuVar11,0,0)" (( "(") (pointer_expression "*ppuVar11" (* "*") (identifier "ppuVar11")) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "ppuVar11[2] = puVar5;" (assignment_expression "ppuVar11[2] = puVar5" (subscript_expression "ppuVar11[2]" (identifier "ppuVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (if_statement "if ((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)) {\n        puVar5 = DAT_001d13a0;\n      }" (if "if") (parenthesized_expression "((puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0))" (( "(") (binary_expression "(puVar5 == (undefined *)0x0) &&\n         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)" (parenthesized_expression "(puVar5 == (undefined *)0x0)" (( "(") (binary_expression "puVar5 == (undefined *)0x0" (identifier "puVar5") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0)" (( "(") (comma_expression "puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),\n         puVar5 == (undefined *)0x0" (assignment_expression "puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" (identifier "puVar5") (= "=") (cast_expression "(undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0)" (identifier "FUN_00025ba0") (argument_list "(param_1,uVar10,ppuVar11 + 2,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar10") (, ",") (binary_expression "ppuVar11 + 2" (identifier "ppuVar11") (+ "+") (number_literal "2")) (, ",") (number_literal "0") () ")"))))) (, ",") (binary_expression "puVar5 == (undefined *)0x0" (identifier "puVar5") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n        puVar5 = DAT_001d13a0;\n      }" ({ "{") (expression_statement "puVar5 = DAT_001d13a0;" (assignment_expression "puVar5 = DAT_001d13a0" (identifier "puVar5") (= "=") (identifier "DAT_001d13a0")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "uVar7 = FUN_00032c60(0x103,"__section_alignment__");" (assignment_expression "uVar7 = FUN_00032c60(0x103,"__section_alignment__")" (identifier "uVar7") (= "=") (call_expression "FUN_00032c60(0x103,"__section_alignment__")" (identifier "FUN_00032c60") (argument_list "(0x103,"__section_alignment__")" (( "(") (number_literal "0x103") (, ",") (string_literal ""__section_alignment__"" (" """) (string_content "__section_alignment__") (" """)) () ")")))) (; ";")) (expression_statement "uVar7 = FUN_00032be0(0x117,uVar7);" (assignment_expression "uVar7 = FUN_00032be0(0x117,uVar7)" (identifier "uVar7") (= "=") (call_expression "FUN_00032be0(0x117,uVar7)" (identifier "FUN_00032be0") (argument_list "(0x117,uVar7)" (( "(") (number_literal "0x117") (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);" (assignment_expression "local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" (identifier "local_3c") (= "=") (call_expression "FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" (identifier "FUN_00029730") (argument_list "(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24)" (( "(") (identifier "param_1") (, ",") (identifier "local_38") (, ",") (identifier "param_3") (, ",") (identifier "puVar5") (, ",") (identifier "ppuVar11") (, ",") (identifier "uVar7") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")")))) (; ";")) (if_statement "if ((DAT_001d13e0 & 3) == 2) {\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }" (if "if") (parenthesized_expression "((DAT_001d13e0 & 3) == 2)" (( "(") (binary_expression "(DAT_001d13e0 & 3) == 2" (parenthesized_expression "(DAT_001d13e0 & 3)" (( "(") (binary_expression "DAT_001d13e0 & 3" (identifier "DAT_001d13e0") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    uVar7 = *(undefined4 *)(param_1 + 0x58);\n    *(undefined4 *)(local_3c + 0x44) = uVar7;\n    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;\n  }" ({ "{") (expression_statement "uVar7 = *(undefined4 *)(param_1 + 0x58);" (assignment_expression "uVar7 = *(undefined4 *)(param_1 + 0x58)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(local_3c + 0x44) = uVar7;" (assignment_expression "*(undefined4 *)(local_3c + 0x44) = uVar7" (pointer_expression "*(undefined4 *)(local_3c + 0x44)" (* "*") (cast_expression "(undefined4 *)(local_3c + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + 0x44)" (( "(") (binary_expression "local_3c + 0x44" (identifier "local_3c") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;" (assignment_expression "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7" (pointer_expression "*(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58)" (* "*") (cast_expression "(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_3c + 0x1c) + 0x58)" (( "(") (binary_expression "*(int *)(local_3c + 0x1c) + 0x58" (pointer_expression "*(int *)(local_3c + 0x1c)" (* "*") (cast_expression "(int *)(local_3c + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + 0x1c)" (( "(") (binary_expression "local_3c + 0x1c" (identifier "local_3c") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (} "}"))) (labeled_statement "LAB_00055848:\n  piVar4 = *(int **)(local_3c + 8);" (statement_identifier "LAB_00055848") (: ":") (expression_statement "piVar4 = *(int **)(local_3c + 8);" (assignment_expression "piVar4 = *(int **)(local_3c + 8)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(local_3c + 8)" (* "*") (cast_expression "(int **)(local_3c + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_3c + 8)" (( "(") (binary_expression "local_3c + 8" (identifier "local_3c") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (expression_statement "piVar3 = (int *)(local_3c + 8);" (assignment_expression "piVar3 = (int *)(local_3c + 8)" (identifier "piVar3") (= "=") (cast_expression "(int *)(local_3c + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + 8)" (( "(") (binary_expression "local_3c + 8" (identifier "local_3c") (+ "+") (number_literal "8")) () ")")))) (; ";")) (while_statement "while (piVar2 = piVar4, piVar2 != (int *)0x0) {\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }" (while "while") (parenthesized_expression "(piVar2 = piVar4, piVar2 != (int *)0x0)" (( "(") (comma_expression "piVar2 = piVar4, piVar2 != (int *)0x0" (assignment_expression "piVar2 = piVar4" (identifier "piVar2") (= "=") (identifier "piVar4")) (, ",") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n    if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }\n    piVar3 = piVar2;\n    piVar4 = (int *)*piVar2;\n  }" ({ "{") (if_statement "if (piVar2[1] == 5) {\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }" (if "if") (parenthesized_expression "(piVar2[1] == 5)" (( "(") (binary_expression "piVar2[1] == 5" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n      __s = *(char **)piVar2[2];\n      pcVar8 = strchr(__s,0x24);\n      if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;\n    }" ({ "{") (expression_statement "__s = *(char **)piVar2[2];" (assignment_expression "__s = *(char **)piVar2[2]" (identifier "__s") (= "=") (pointer_expression "*(char **)piVar2[2]" (* "*") (cast_expression "(char **)piVar2[2]" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (expression_statement "pcVar8 = strchr(__s,0x24);" (assignment_expression "pcVar8 = strchr(__s,0x24)" (identifier "pcVar8") (= "=") (call_expression "strchr(__s,0x24)" (identifier "strchr") (argument_list "(__s,0x24)" (( "(") (identifier "__s") (, ",") (number_literal "0x24") () ")")))) (; ";")) (if_statement "if ((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;" (if "if") (parenthesized_expression "((pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0))))" (( "(") (binary_expression "(pcVar8 != (char *)0x0) &&\n         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))" (parenthesized_expression "(pcVar8 != (char *)0x0)" (( "(") (binary_expression "pcVar8 != (char *)0x0" (identifier "pcVar8") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))" (( "(") (parenthesized_expression "(local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0))" (( "(") (binary_expression "local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)" (binary_expression "local_40 == (char *)0x0" (identifier "local_40") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (parenthesized_expression "(iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)" (( "(") (comma_expression "iVar9 = strcmp((char *)param_2,__s), iVar9 < 0" (assignment_expression "iVar9 = strcmp((char *)param_2,__s)" (identifier "iVar9") (= "=") (call_expression "strcmp((char *)param_2,__s)" (identifier "strcmp") (argument_list "((char *)param_2,__s)" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) (, ",") (identifier "__s") () ")")))) (, ",") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" (identifier "piVar3") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "piVar4 = (int *)*piVar2;" (assignment_expression "piVar4 = (int *)*piVar2" (identifier "piVar4") (= "=") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (} "}"))) (if_statement "if (local_24 != 0) {\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }" (if "if") (parenthesized_expression "(local_24 != 0)" (( "(") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *local_20 = piVar2;\n    *piVar3 = local_24;\n  }" ({ "{") (expression_statement "*local_20 = piVar2;" (assignment_expression "*local_20 = piVar2" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (identifier "piVar2")) (; ";")) (expression_statement "*piVar3 = local_24;" (assignment_expression "*piVar3 = local_24" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (identifier "local_24")) (; ";")) (} "}"))) (return_statement "return local_3c;" (return "return") (identifier "local_3c") (; ";")) (} "}")))

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

type_1 *
function_1(type_2 *s,char *secname,int var_7)

{
  type_3 var_18;
  char *__s;
  type_4 *var_29;
  type_4 *plVar3;
  type_1 *var_14;
  type_2 *var_17;
  type_5 *peVar6;
  char *var_31;
  int var_20;
  type_4 *var_24;
  type_6 *pbVar10;
  size_t var_4;
  type_3 var_10;
  type_7 *var_15;
  type_8 *var_21;
  type_1 *var_13;
  type_8 *var_22;
  bool var_23;
  bool bVar16;
  type_8 bVar17;
  char *var_2;
  type_1 *var_9;
  type_8 *local_38;
  type_9 add_child;
  
  bVar17 = 0;
  if ((link_info._0_1_ & 3) == 2) {
    var_2 = (char *)0x0;
    local_38 = (type_8 *)secname;
  }
  else {
    var_2 = var_1(secname,0x24);
    local_38 = (type_8 *)secname;
    if (var_2 != (char *)0x0) {
      var_4 = (int)var_2 - (int)secname;
      local_38 = (type_8 *)var_3(var_4 + 1);
      var_5(local_38,secname,var_4);
      local_38[var_4] = 0;
    }
  }
  var_6(&add_child);
  if ((var_7 == 0) &&
     (var_9 = var_8((char *)local_38,0,0),
     var_9 != (type_1 *)0x0)) {
    var_14 = (type_1 *)0x0;
    do {
      var_13 = var_9;
      if ((var_9->type_11 != (type_2 *)0x0) &&
         ((var_10 = var_9->type_11->flags, var_10 == 0 ||
          (var_13 = var_14, ((var_10 ^ s->flags) & 3) == 0)))) {
        var_11(&add_child,s,(type_10 *)0x0,var_9);
        goto LAB_00055848;
      }
      var_9 = var_12(var_9,0);
      var_14 = var_13;
    } while (var_9 != (type_1 *)0x0);
    if (var_13 != (type_1 *)0x0) {
      var_11(&var_13->children,s,(type_10 *)0x0,var_13);
      return var_13;
    }
    var_7 = 0x17e;
  }
  if (function_1::lexical_block_10::orphan_init_done == 0) {
    var_15 = function_1::lexical_block_10::var_19;
    do {
      if (var_15->name != (char *)0x0) {
        var_14 = var_8(var_15->name,0,0);
        var_15->os = var_14;
        if ((var_14 != (type_1 *)0x0) && (var_14->flags == 0)) {
          var_14->flags = var_15->flags;
        }
      }
      var_15 = var_15 + 1;
    } while (var_15 != (type_7 *)&DAT_001d0018);
    gld_i386pe_place_orphan::lexical_block_10::orphan_init_done = 1;
  }
  var_10 = s->flags;
  if ((link_info._0_1_ & 3) != 2) {
    pbVar10 = s->owner;
    var_17 = s;
    while (var_17 = (type_2 *)var_16(pbVar10,var_17),
          var_17 != (type_2 *)0x0) {
      pbVar10 = var_17->owner;
      if ((((var_17->output_section == (type_11 *)0x0) &&
           (var_18 = var_17->flags, ((var_10 ^ var_18) & 3) == 0 && (var_18 & 0x8000) == 0)) &&
          ((pbVar10->field_0x29 & 8) == 0)) &&
         ((pbVar10->usrdata != (void *)0x0 &&
          ((*(type_8 *)((int)pbVar10->usrdata + 0x24) & 0x10) == 0)))) {
        var_10 = (var_18 ^ 8 | var_10 ^ 8) ^ 8;
      }
    }
  }
  if ((var_10 & 1) == 0) {
    var_15 = (type_7 *)0x0;
    var_24 = (type_4 *)0x0;
  }
  else {
    var_15 = function_1::lexical_block_10::var_19 + 4;
    if (((var_10 & 0x102) != 0) &&
       (var_15 = function_1::lexical_block_10::var_19 + 3, (var_10 & 8) != 0)) {
      var_23 = false;
      bVar16 = (var_10 & 0x10) == 0;
      var_15 = function_1::lexical_block_10::var_19;
      if (bVar16) {
        var_20 = 7;
        var_21 = local_38;
        var_22 = (type_8 *)".idata$";
        do {
          if (var_20 == 0) break;
          var_20 = var_20 + -1;
          var_23 = *var_21 < *var_22;
          bVar16 = *var_21 == *var_22;
          var_21 = var_21 + (type_3)bVar17 * -2 + 1;
          var_22 = var_22 + (type_3)bVar17 * -2 + 1;
        } while (bVar16);
        var_15 = function_1::lexical_block_10::var_19 + 1;
        if ((!var_23 && !bVar16) != var_23) {
          var_15 = function_1::lexical_block_10::var_19 + 2;
        }
      }
    }
    var_24 = (type_4 *)var_15->os;
    if ((type_4 *)var_15->os == (type_4 *)0x0) {
      var_24 = (type_4 *)var_8(var_15->name,0,0);
      var_15->os = (type_1 *)var_24;
      if ((var_24 == (type_4 *)0x0) &&
         (var_24 = (type_4 *)
                   var_25
                             (s,var_10,&var_15->os,(type_12)0x0),
         var_24 == (type_4 *)0x0)) {
        var_24 = lang_output_section_statement.head;
      }
    }
  }
  peVar6 = var_26(0x103,"__section_alignment__");
  peVar6 = var_27(0x117,peVar6);
  var_9 = var_28(s,(char *)local_38,var_7,&var_24->output_section_statement,
                                var_15,peVar6,&add_child);
  if ((link_info._0_1_ & 3) == 2) {
    var_10 = s->alignment_power;
    var_9->section_alignment = var_10;
    var_9->type_11->alignment_power = var_10;
  }
LAB_00055848:
  plVar3 = (var_9->children).head;
  var_24 = (type_4 *)&var_9->children;
  while (var_29 = plVar3, var_29 != (type_4 *)0x0) {
    if ((var_29->header).type == var_30) {
      __s = ((var_29->input_section).section)->name;
      var_31 = var_1(__s,0x24);
      if ((var_31 != (char *)0x0) &&
         ((var_2 == (char *)0x0 || (var_20 = var_32(secname,__s), var_20 < 0)))) break;
    }
    var_24 = var_29;
    plVar3 = (var_29->header).next;
  }
  if (add_child.head != (type_4 *)0x0) {
    *add_child.tail = var_29;
    (var_24->header).next = add_child.head;
  }
  return var_9;
}


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

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

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

{
  uint uVar1;
  char *__s;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  undefined *puVar5;
  int iVar6;
  undefined4 uVar7;
  char *pcVar8;
  int iVar9;
  size_t __n;
  uint uVar10;
  undefined **ppuVar11;
  byte *pbVar12;
  byte *pbVar13;
  bool bVar14;
  bool bVar15;
  byte bVar16;
  char *local_40;
  int local_3c;
  byte *local_38;
  int local_24;
  undefined4 *local_20;
  undefined4 uStack_14;
  
  bVar16 = 0;
  uStack_14 = 0x55659;
  if ((DAT_001d13e0 & 3) == 2) {
    local_40 = (char *)0x0;
    local_38 = param_2;
  }
  else {
    local_40 = strchr((char *)param_2,0x24);
    local_38 = param_2;
    if (local_40 != (char *)0x0) {
      __n = (int)local_40 - (int)param_2;
      local_38 = (byte *)xmalloc(__n + 1);
      memcpy(local_38,param_2,__n);
      local_38[__n] = 0;
    }
  }
  FUN_00023e00(&local_24);
  if ((param_3 == 0) && (local_3c = FUN_000256d0(local_38,0,0), local_3c != 0)) {
    iVar9 = 0;
    do {
      iVar6 = local_3c;
      if ((*(int *)(local_3c + 0x1c) != 0) &&
         ((uVar10 = *(uint *)(*(int *)(local_3c + 0x1c) + 0x14), uVar10 == 0 ||
          (iVar6 = iVar9, ((uVar10 ^ *(uint *)(param_1 + 0x14)) & 3) == 0)))) {
        FUN_00026550(&local_24,param_1,0,local_3c);
        goto LAB_00055848;
      }
      local_3c = FUN_00025b20(local_3c,0);
      iVar9 = iVar6;
    } while (local_3c != 0);
    if (iVar6 != 0) {
      FUN_00026550(iVar6 + 8,param_1,0,iVar6);
      return iVar6;
    }
    param_3 = 0x17e;
  }
  if (DAT_001d0f88 == 0) {
    ppuVar11 = &PTR_s__text_001cffa0;
    do {
      if (*ppuVar11 != (undefined *)0x0) {
        puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);
        ppuVar11[2] = puVar5;
        if ((puVar5 != (undefined *)0x0) && (*(int *)(puVar5 + 0x4c) == 0)) {
          *(undefined **)(puVar5 + 0x4c) = ppuVar11[1];
        }
      }
      ppuVar11 = ppuVar11 + 6;
    } while (ppuVar11 != (undefined **)&DAT_001d0018);
    DAT_001d0f88 = 1;
  }
  uVar10 = *(uint *)(param_1 + 0x14);
  if ((DAT_001d13e0 & 3) != 2) {
    iVar9 = *(int *)(param_1 + 0xac);
    iVar6 = param_1;
    while (iVar6 = bfd_get_next_section_by_name(iVar9,iVar6), iVar6 != 0) {
      iVar9 = *(int *)(iVar6 + 0xac);
      if ((((*(int *)(iVar6 + 0x54) == 0) &&
           (uVar1 = *(uint *)(iVar6 + 0x14), ((uVar10 ^ uVar1) & 3) == 0 && (uVar1 & 0x8000) == 0))
          && ((*(byte *)(iVar9 + 0x29) & 8) == 0)) &&
         ((*(int *)(iVar9 + 0xa4) != 0 && ((*(byte *)(*(int *)(iVar9 + 0xa4) + 0x24) & 0x10) == 0)))
         ) {
        uVar10 = (uVar1 ^ 8 | uVar10 ^ 8) ^ 8;
      }
    }
  }
  if ((uVar10 & 1) == 0) {
    ppuVar11 = (undefined **)0x0;
    puVar5 = (undefined *)0x0;
  }
  else {
    ppuVar11 = &PTR_s__bss_001d0000;
    if (((uVar10 & 0x102) != 0) && (ppuVar11 = &PTR_s__data_001cffe8, (uVar10 & 8) != 0)) {
      bVar14 = false;
      bVar15 = (uVar10 & 0x10) == 0;
      ppuVar11 = &PTR_s__text_001cffa0;
      if (bVar15) {
        iVar9 = 7;
        pbVar12 = local_38;
        pbVar13 = (byte *)".idata$";
        do {
          if (iVar9 == 0) break;
          iVar9 = iVar9 + -1;
          bVar14 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (uint)bVar16 * -2 + 1;
          pbVar13 = pbVar13 + (uint)bVar16 * -2 + 1;
        } while (bVar15);
        ppuVar11 = &PTR_s__idata_001cffb8;
        if ((!bVar14 && !bVar15) != bVar14) {
          ppuVar11 = &PTR_s__rdata_001cffd0;
        }
      }
    }
    puVar5 = ppuVar11[2];
    if (ppuVar11[2] == (undefined *)0x0) {
      puVar5 = (undefined *)FUN_000256d0(*ppuVar11,0,0);
      ppuVar11[2] = puVar5;
      if ((puVar5 == (undefined *)0x0) &&
         (puVar5 = (undefined *)FUN_00025ba0(param_1,uVar10,ppuVar11 + 2,0),
         puVar5 == (undefined *)0x0)) {
        puVar5 = DAT_001d13a0;
      }
    }
  }
  uVar7 = FUN_00032c60(0x103,"__section_alignment__");
  uVar7 = FUN_00032be0(0x117,uVar7);
  local_3c = FUN_00029730(param_1,local_38,param_3,puVar5,ppuVar11,uVar7,&local_24);
  if ((DAT_001d13e0 & 3) == 2) {
    uVar7 = *(undefined4 *)(param_1 + 0x58);
    *(undefined4 *)(local_3c + 0x44) = uVar7;
    *(undefined4 *)(*(int *)(local_3c + 0x1c) + 0x58) = uVar7;
  }
LAB_00055848:
  piVar4 = *(int **)(local_3c + 8);
  piVar3 = (int *)(local_3c + 8);
  while (piVar2 = piVar4, piVar2 != (int *)0x0) {
    if (piVar2[1] == 5) {
      __s = *(char **)piVar2[2];
      pcVar8 = strchr(__s,0x24);
      if ((pcVar8 != (char *)0x0) &&
         ((local_40 == (char *)0x0 || (iVar9 = strcmp((char *)param_2,__s), iVar9 < 0)))) break;
    }
    piVar3 = piVar2;
    piVar4 = (int *)*piVar2;
  }
  if (local_24 != 0) {
    *local_20 = piVar2;
    *piVar3 = local_24;
  }
  return local_3c;
}

