
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void strip_excluded_output_sections(void)

{
  asection *paVar1;
  uint uVar2;
  bfd_section *pbVar3;
  asection *paVar4;
  bfd_section *pbVar5;
  bfd *pbVar6;
  lang_statement_union *plVar7;
  byte bVar8;
  
  if (expld.phase != lang_mark_phase_enum) {
    expld.phase = lang_mark_phase_enum;
    expld.dataseg.phase = exp_seg_none;
    one_lang_size_sections_pass((bfd_boolean *)0x0,0);
    lang_reset_memory_regions();
  }
  pbVar6 = link_info.output_bfd;
  if (lang_output_section_statement.head != (lang_statement_union *)0x0) {
    bVar8 = link_info._3_1_ & 8;
    plVar7 = lang_output_section_statement.head;
    do {
      if ((((-1 < (plVar7->output_section_statement).constraint) &&
           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&
          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&
         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {
        pbVar3 = paVar1->next;
        if (pbVar3 == (bfd_section *)0x0) {
          paVar4 = pbVar6->section_last;
        }
        else {
          paVar4 = pbVar3->prev;
        }
        if (paVar4 == paVar1) {
          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;
              pbVar5 = (pbVar5->map_head).s) {
            if (((pbVar5->flags & 0x8000) == 0) &&
               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;
          }
          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {
            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;
          }
          paVar1->flags = uVar2 | 0x8000;
          pbVar5 = paVar1->prev;
          if (pbVar5 == (bfd_section *)0x0) {
            pbVar6->sections = pbVar3;
            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;
LAB_00028b69:
            pbVar3->prev = pbVar5;
          }
          else {
            pbVar5->next = pbVar3;
            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;
LAB_00028b7f:
            pbVar6->section_last = pbVar5;
          }
          pbVar6->section_count = pbVar6->section_count - 1;
        }
      }
LAB_00028b20:
      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;
    } while (plVar7 != (lang_statement_union *)0x0);
  }
  return;
}



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

void FUN_00028a90(void)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  byte bVar7;
  
  if (DAT_001c4780 != 1) {
    DAT_001c4780 = 1;
    DAT_001c47b8 = 0;
    FUN_00027370(0,0);
    FUN_000289f0();
  }
  iVar5 = DAT_001c4614;
  if (DAT_001c45a0 != 0) {
    bVar7 = DAT_001c45e3 & 8;
    iVar6 = DAT_001c45a0;
    do {
      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&
          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&
         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {
        iVar3 = *(int *)(iVar1 + 0xc);
        if (iVar3 == 0) {
          iVar4 = *(int *)(iVar5 + 100);
        }
        else {
          iVar4 = *(int *)(iVar3 + 0x10);
        }
        if (iVar4 == iVar1) {
          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {
            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&
               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;
          }
          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {
            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;
          }
          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;
          iVar1 = *(int *)(iVar1 + 0x10);
          if (iVar1 == 0) {
            *(int *)(iVar5 + 0x60) = iVar3;
            if (iVar3 == 0) goto LAB_00028b7f;
LAB_00028b69:
            *(int *)(iVar3 + 0x10) = iVar1;
          }
          else {
            *(int *)(iVar1 + 0xc) = iVar3;
            if (iVar3 != 0) goto LAB_00028b69;
LAB_00028b7f:
            *(int *)(iVar5 + 100) = iVar1;
          }
          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;
        }
      }
LAB_00028b20:
      iVar6 = *(int *)(iVar6 + 0x10);
    } while (iVar6 != 0);
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00017c50
ADD EBX,0x199567
SUB ESP,0x1c
LEA EAX,[EBX + 0x2780]
CMP dword ptr [EAX],0x1
JZ 0x00028ace
SUB ESP,0x8
MOV dword ptr [EAX],0x1
MOV dword ptr [EAX + 0x38],0x0
PUSH 0x0
PUSH 0x0
CALL 0x00027370
CALL 0x000289f0
ADD ESP,0x10
LEA EAX,[EBX + 0x25a0]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00028b27
LEA EDX,[EBX + 0x25e0]
MOV EDI,dword ptr [EDX + 0x34]
MOVZX EDX,byte ptr [EDX + 0x3]
AND EDX,0x8
MOV byte ptr [ESP + 0xb],DL
NOP
MOV EDX,dword ptr [EAX + 0x48]
TEST EDX,EDX
JS 0x00028b20
MOV EDX,dword ptr [EAX + 0x1c]
TEST EDX,EDX
JZ 0x00028b20
MOV ECX,dword ptr [EDX + 0x38]
OR ECX,dword ptr [EDX + 0x34]
JNZ 0x00028b20
MOV EBP,dword ptr [EDX + 0x14]
TEST EBP,0x200000
JNZ 0x00028b20
MOV EBX,dword ptr [EDX + 0xc]
TEST EBX,EBX
JZ 0x00028b30
CMP dword ptr [EBX + 0x10],EDX
JZ 0x00028b35
LEA ESI,[ESI]
MOV EAX,dword ptr [EAX + 0x10]
TEST EAX,EAX
JNZ 0x00028af0
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP dword ptr [EDI + 0x64],EDX
JNZ 0x00028b20
MOV ESI,dword ptr [EDX + 0xb8]
TEST ESI,ESI
JNZ 0x00028b88
MOVZX ESI,byte ptr [EAX + 0x54]
TEST ESI,0x10
JNZ 0x00028b53
OR ESI,0x8
MOV ECX,ESI
MOV byte ptr [EAX + 0x54],CL
MOV ECX,EBP
OR CH,0x80
MOV dword ptr [EDX + 0x14],ECX
MOV EDX,dword ptr [EDX + 0x10]
TEST EDX,EDX
JZ 0x00028b78
MOV dword ptr [EDX + 0xc],EBX
TEST EBX,EBX
JZ 0x00028b7f
MOV dword ptr [EBX + 0x10],EDX
SUB dword ptr [EDI + 0x68],0x1
JMP 0x00028b20
MOV dword ptr [EDI + 0x60],EBX
TEST EBX,EBX
JNZ 0x00028b69
MOV dword ptr [EDI + 0x64],EDX
JMP 0x00028b6c
MOV dword ptr [ESP + 0xc],EDX
MOVZX EDX,byte ptr [ESP + 0xb]
MOV ECX,EBP
LEA ESI,[ESI]
NOP
MOV EBP,dword ptr [ESI + 0x14]
TEST EBP,0x8000
JNZ 0x00028bb7
AND EBP,0x100000
JNZ 0x00028b20
TEST DL,DL
JNZ 0x00028b20
MOV ESI,dword ptr [ESI + 0xb8]
TEST ESI,ESI
JNZ 0x00028b98
MOV EBP,ECX
MOV EDX,dword ptr [ESP + 0xc]
JMP 0x00028b3f
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00028a90(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  byte bVar7;\n  \n  if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }\n  iVar5 = DAT_001c4614;\n  if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00028a90(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  byte bVar7;\n  \n  if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }\n  iVar5 = DAT_001c4614;\n  if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00028a90(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  byte bVar7;\n  \n  if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }\n  iVar5 = DAT_001c4614;\n  if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (if_statement "if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }" if (parenthesized_expression "(DAT_001c4780 != 1)" ( (binary_expression "DAT_001c4780 != 1" identifier != number_literal) )) (compound_statement "{\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }" { (expression_statement "DAT_001c4780 = 1;" (assignment_expression "DAT_001c4780 = 1" identifier = number_literal) ;) (expression_statement "DAT_001c47b8 = 0;" (assignment_expression "DAT_001c47b8 = 0" identifier = number_literal) ;) (expression_statement "FUN_00027370(0,0);" (call_expression "FUN_00027370(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_000289f0();" (call_expression "FUN_000289f0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar5 = DAT_001c4614;" (assignment_expression "iVar5 = DAT_001c4614" identifier = identifier) ;) (if_statement "if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }" if (parenthesized_expression "(DAT_001c45a0 != 0)" ( (binary_expression "DAT_001c45a0 != 0" identifier != number_literal) )) (compound_statement "{\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }" { (expression_statement "bVar7 = DAT_001c45e3 & 8;" (assignment_expression "bVar7 = DAT_001c45e3 & 8" identifier = (binary_expression "DAT_001c45e3 & 8" identifier & number_literal)) ;) (expression_statement "iVar6 = DAT_001c45a0;" (assignment_expression "iVar6 = DAT_001c45a0" identifier = identifier) ;) (do_statement "do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);" do (compound_statement "{\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    }" { (if_statement "if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }" if (parenthesized_expression "((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0))" ( (binary_expression "(((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)" (parenthesized_expression "(((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0))" ( (binary_expression "((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)" (parenthesized_expression "((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0))" ( (binary_expression "(-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)" (parenthesized_expression "(-1 < *(int *)(iVar6 + 0x48))" ( (binary_expression "-1 < *(int *)(iVar6 + 0x48)" number_literal < (pointer_expression "*(int *)(iVar6 + 0x48)" * (cast_expression "(int *)(iVar6 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x48)" ( (binary_expression "iVar6 + 0x48" identifier + number_literal) ))))) )) && (parenthesized_expression "(iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)" ( (comma_expression "iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0" (assignment_expression "iVar1 = *(int *)(iVar6 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0" (binary_expression "*(int *)(iVar1 + 0x38) == 0" (pointer_expression "*(int *)(iVar1 + 0x38)" * (cast_expression "(int *)(iVar1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x38)" ( (binary_expression "iVar1 + 0x38" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(iVar1 + 0x34) == 0" (pointer_expression "*(int *)(iVar1 + 0x34)" * (cast_expression "(int *)(iVar1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) == number_literal)) ))) )) && (parenthesized_expression "(uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)" ( (comma_expression "uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) , (binary_expression "(uVar2 & 0x200000) == 0" (parenthesized_expression "(uVar2 & 0x200000)" ( (binary_expression "uVar2 & 0x200000" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }" { (expression_statement "iVar3 = *(int *)(iVar1 + 0xc);" (assignment_expression "iVar3 = *(int *)(iVar1 + 0xc)" identifier = (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar4 = *(int *)(iVar5 + 100);\n        }" { (expression_statement "iVar4 = *(int *)(iVar5 + 100);" (assignment_expression "iVar4 = *(int *)(iVar5 + 100)" identifier = (pointer_expression "*(int *)(iVar5 + 100)" * (cast_expression "(int *)(iVar5 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 100)" ( (binary_expression "iVar5 + 100" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" else (compound_statement "{\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" { (expression_statement "iVar4 = *(int *)(iVar3 + 0x10);" (assignment_expression "iVar4 = *(int *)(iVar3 + 0x10)" identifier = (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }" if (parenthesized_expression "(iVar4 == iVar1)" ( (binary_expression "iVar4 == iVar1" identifier == identifier) )) (compound_statement "{\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }" { (for_statement "for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }" for ( (assignment_expression "iVar4 = *(int *)(iVar1 + 0xb8)" identifier = (pointer_expression "*(int *)(iVar1 + 0xb8)" * (cast_expression "(int *)(iVar1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xb8)" ( (binary_expression "iVar1 + 0xb8" identifier + number_literal) ))))) ; (binary_expression "iVar4 != 0" identifier != number_literal) ; (assignment_expression "iVar4 = *(int *)(iVar4 + 0xb8)" identifier = (pointer_expression "*(int *)(iVar4 + 0xb8)" * (cast_expression "(int *)(iVar4 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb8)" ( (binary_expression "iVar4 + 0xb8" identifier + number_literal) ))))) ) (compound_statement "{\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }" { (if_statement "if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;" if (parenthesized_expression "(((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0))))" ( (binary_expression "((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))" (parenthesized_expression "((*(uint *)(iVar4 + 0x14) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(iVar4 + 0x14) & 0x8000)" ( (binary_expression "*(uint *)(iVar4 + 0x14) & 0x8000" (pointer_expression "*(uint *)(iVar4 + 0x14)" * (cast_expression "(uint *)(iVar4 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))" ( (parenthesized_expression "((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0))" ( (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)" (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x100000) != 0" (parenthesized_expression "(*(uint *)(iVar4 + 0x14) & 0x100000)" ( (binary_expression "*(uint *)(iVar4 + 0x14) & 0x100000" (pointer_expression "*(uint *)(iVar4 + 0x14)" * (cast_expression "(uint *)(iVar4 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) || (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_00028b20;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }" if (parenthesized_expression "((*(byte *)(iVar6 + 0x54) & 0x10) == 0)" ( (binary_expression "(*(byte *)(iVar6 + 0x54) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x54) & 0x10)" ( (binary_expression "*(byte *)(iVar6 + 0x54) & 0x10" (pointer_expression "*(byte *)(iVar6 + 0x54)" * (cast_expression "(byte *)(iVar6 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x54)" ( (binary_expression "iVar6 + 0x54" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }" { (expression_statement "*(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;" (assignment_expression "*(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8" (pointer_expression "*(byte *)(iVar6 + 0x54)" * (cast_expression "(byte *)(iVar6 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x54)" ( (binary_expression "iVar6 + 0x54" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar6 + 0x54) | 8" (pointer_expression "*(byte *)(iVar6 + 0x54)" * (cast_expression "(byte *)(iVar6 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x54)" ( (binary_expression "iVar6 + 0x54" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "*(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;" (assignment_expression "*(uint *)(iVar1 + 0x14) = uVar2 | 0x8000" (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) = (binary_expression "uVar2 | 0x8000" identifier | number_literal)) ;) (expression_statement "iVar1 = *(int *)(iVar1 + 0x10);" (assignment_expression "iVar1 = *(int *)(iVar1 + 0x10)" identifier = (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }" { (expression_statement "*(int *)(iVar5 + 0x60) = iVar3;" (assignment_expression "*(int *)(iVar5 + 0x60) = iVar3" (pointer_expression "*(int *)(iVar5 + 0x60)" * (cast_expression "(int *)(iVar5 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x60)" ( (binary_expression "iVar5 + 0x60" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar3 == 0) goto LAB_00028b7f;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028b7f;" goto statement_identifier ;)) (labeled_statement "LAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;" statement_identifier : (expression_statement "*(int *)(iVar3 + 0x10) = iVar1;" (assignment_expression "*(int *)(iVar3 + 0x10) = iVar1" (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) = identifier) ;)) }) (else_clause "else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" else (compound_statement "{\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" { (expression_statement "*(int *)(iVar1 + 0xc) = iVar3;" (assignment_expression "*(int *)(iVar1 + 0xc) = iVar3" (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar3 != 0) goto LAB_00028b69;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028b69;" goto statement_identifier ;)) (labeled_statement "LAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;" statement_identifier : (expression_statement "*(int *)(iVar5 + 100) = iVar1;" (assignment_expression "*(int *)(iVar5 + 100) = iVar1" (pointer_expression "*(int *)(iVar5 + 100)" * (cast_expression "(int *)(iVar5 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 100)" ( (binary_expression "iVar5 + 100" identifier + number_literal) )))) = identifier) ;)) }))) (expression_statement "*(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;" (assignment_expression "*(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1" (pointer_expression "*(int *)(iVar5 + 0x68)" * (cast_expression "(int *)(iVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x68)" ( (binary_expression "iVar5 + 0x68" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 0x68) + -1" (pointer_expression "*(int *)(iVar5 + 0x68)" * (cast_expression "(int *)(iVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x68)" ( (binary_expression "iVar5 + 0x68" identifier + number_literal) )))) + number_literal)) ;) })) })) (labeled_statement "LAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);" statement_identifier : (expression_statement "iVar6 = *(int *)(iVar6 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar6 + 0x10)" identifier = (pointer_expression "*(int *)(iVar6 + 0x10)" * (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;)) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid strip_excluded_output_sections(void)\n\n{\n  asection *paVar1;\n  uint uVar2;\n  bfd_section *pbVar3;\n  asection *paVar4;\n  bfd_section *pbVar5;\n  bfd *pbVar6;\n  lang_statement_union *plVar7;\n  byte bVar8;\n  \n  if (expld.phase != lang_mark_phase_enum) {\n    expld.phase = lang_mark_phase_enum;\n    expld.dataseg.phase = exp_seg_none;\n    one_lang_size_sections_pass((bfd_boolean *)0x0,0);\n    lang_reset_memory_regions();\n  }\n  pbVar6 = link_info.output_bfd;\n  if (lang_output_section_statement.head != (lang_statement_union *)0x0) {\n    bVar8 = link_info._3_1_ & 8;\n    plVar7 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }\nLAB_00028b20:\n      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;\n    } while (plVar7 != (lang_statement_union *)0x0);\n  }\n  return;\n}\n\n" comment comment (function_definition "void strip_excluded_output_sections(void)\n\n{\n  asection *paVar1;\n  uint uVar2;\n  bfd_section *pbVar3;\n  asection *paVar4;\n  bfd_section *pbVar5;\n  bfd *pbVar6;\n  lang_statement_union *plVar7;\n  byte bVar8;\n  \n  if (expld.phase != lang_mark_phase_enum) {\n    expld.phase = lang_mark_phase_enum;\n    expld.dataseg.phase = exp_seg_none;\n    one_lang_size_sections_pass((bfd_boolean *)0x0,0);\n    lang_reset_memory_regions();\n  }\n  pbVar6 = link_info.output_bfd;\n  if (lang_output_section_statement.head != (lang_statement_union *)0x0) {\n    bVar8 = link_info._3_1_ & 8;\n    plVar7 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }\nLAB_00028b20:\n      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;\n    } while (plVar7 != (lang_statement_union *)0x0);\n  }\n  return;\n}" primitive_type (function_declarator "strip_excluded_output_sections(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  asection *paVar1;\n  uint uVar2;\n  bfd_section *pbVar3;\n  asection *paVar4;\n  bfd_section *pbVar5;\n  bfd *pbVar6;\n  lang_statement_union *plVar7;\n  byte bVar8;\n  \n  if (expld.phase != lang_mark_phase_enum) {\n    expld.phase = lang_mark_phase_enum;\n    expld.dataseg.phase = exp_seg_none;\n    one_lang_size_sections_pass((bfd_boolean *)0x0,0);\n    lang_reset_memory_regions();\n  }\n  pbVar6 = link_info.output_bfd;\n  if (lang_output_section_statement.head != (lang_statement_union *)0x0) {\n    bVar8 = link_info._3_1_ & 8;\n    plVar7 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }\nLAB_00028b20:\n      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;\n    } while (plVar7 != (lang_statement_union *)0x0);\n  }\n  return;\n}" { (declaration "asection *paVar1;" type_identifier (pointer_declarator "*paVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "bfd_section *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "asection *paVar4;" type_identifier (pointer_declarator "*paVar4" * identifier) ;) (declaration "bfd_section *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bfd *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "lang_statement_union *plVar7;" type_identifier (pointer_declarator "*plVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (if_statement "if (expld.phase != lang_mark_phase_enum) {\n    expld.phase = lang_mark_phase_enum;\n    expld.dataseg.phase = exp_seg_none;\n    one_lang_size_sections_pass((bfd_boolean *)0x0,0);\n    lang_reset_memory_regions();\n  }" if (parenthesized_expression "(expld.phase != lang_mark_phase_enum)" ( (binary_expression "expld.phase != lang_mark_phase_enum" (field_expression "expld.phase" identifier . field_identifier) != identifier) )) (compound_statement "{\n    expld.phase = lang_mark_phase_enum;\n    expld.dataseg.phase = exp_seg_none;\n    one_lang_size_sections_pass((bfd_boolean *)0x0,0);\n    lang_reset_memory_regions();\n  }" { (expression_statement "expld.phase = lang_mark_phase_enum;" (assignment_expression "expld.phase = lang_mark_phase_enum" (field_expression "expld.phase" identifier . field_identifier) = identifier) ;) (expression_statement "expld.dataseg.phase = exp_seg_none;" (assignment_expression "expld.dataseg.phase = exp_seg_none" (field_expression "expld.dataseg.phase" (field_expression "expld.dataseg" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "one_lang_size_sections_pass((bfd_boolean *)0x0,0);" (call_expression "one_lang_size_sections_pass((bfd_boolean *)0x0,0)" identifier (argument_list "((bfd_boolean *)0x0,0)" ( (cast_expression "(bfd_boolean *)0x0" ( (type_descriptor "bfd_boolean *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) (expression_statement "lang_reset_memory_regions();" (call_expression "lang_reset_memory_regions()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "pbVar6 = link_info.output_bfd;" (assignment_expression "pbVar6 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) (if_statement "if (lang_output_section_statement.head != (lang_statement_union *)0x0) {\n    bVar8 = link_info._3_1_ & 8;\n    plVar7 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }\nLAB_00028b20:\n      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;\n    } while (plVar7 != (lang_statement_union *)0x0);\n  }" if (parenthesized_expression "(lang_output_section_statement.head != (lang_statement_union *)0x0)" ( (binary_expression "lang_output_section_statement.head != (lang_statement_union *)0x0" (field_expression "lang_output_section_statement.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    bVar8 = link_info._3_1_ & 8;\n    plVar7 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }\nLAB_00028b20:\n      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;\n    } while (plVar7 != (lang_statement_union *)0x0);\n  }" { (expression_statement "bVar8 = link_info._3_1_ & 8;" (assignment_expression "bVar8 = link_info._3_1_ & 8" identifier = (binary_expression "link_info._3_1_ & 8" (field_expression "link_info._3_1_" identifier . field_identifier) & number_literal)) ;) (expression_statement "plVar7 = lang_output_section_statement.head;" (assignment_expression "plVar7 = lang_output_section_statement.head" identifier = (field_expression "lang_output_section_statement.head" identifier . field_identifier)) ;) (do_statement "do {\n      if ((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }\nLAB_00028b20:\n      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;\n    } while (plVar7 != (lang_statement_union *)0x0);" do (compound_statement "{\n      if ((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }\nLAB_00028b20:\n      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;\n    }" { (if_statement "if ((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)) {\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }" if (parenthesized_expression "((((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0))" ( (binary_expression "(((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)) &&\n         (uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)" (parenthesized_expression "(((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0))" ( (binary_expression "((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)) &&\n          (*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)" (parenthesized_expression "((-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0))" ( (binary_expression "(-1 < (plVar7->output_section_statement).constraint) &&\n           (paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)" (parenthesized_expression "(-1 < (plVar7->output_section_statement).constraint)" ( (binary_expression "-1 < (plVar7->output_section_statement).constraint" number_literal < (field_expression "(plVar7->output_section_statement).constraint" (parenthesized_expression "(plVar7->output_section_statement)" ( (field_expression "plVar7->output_section_statement" identifier -> field_identifier) )) . field_identifier)) )) && (parenthesized_expression "(paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0)" ( (comma_expression "paVar1 = (plVar7->output_section_statement).bfd_section, paVar1 != (asection *)0x0" (assignment_expression "paVar1 = (plVar7->output_section_statement).bfd_section" identifier = (field_expression "(plVar7->output_section_statement).bfd_section" (parenthesized_expression "(plVar7->output_section_statement)" ( (field_expression "plVar7->output_section_statement" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "paVar1 != (asection *)0x0" identifier != (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0)" ( (binary_expression "*(int *)((int)&paVar1->rawsize + 4) == 0 && (int)paVar1->rawsize == 0" (binary_expression "*(int *)((int)&paVar1->rawsize + 4) == 0" (pointer_expression "*(int *)((int)&paVar1->rawsize + 4)" * (cast_expression "(int *)((int)&paVar1->rawsize + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar1->rawsize + 4)" ( (binary_expression "(int)&paVar1->rawsize + 4" (cast_expression "(int)&paVar1->rawsize" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar1->rawsize" & (field_expression "paVar1->rawsize" identifier -> field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)paVar1->rawsize == 0" (cast_expression "(int)paVar1->rawsize" ( (type_descriptor "int" primitive_type) ) (field_expression "paVar1->rawsize" identifier -> field_identifier)) == number_literal)) ))) )) && (parenthesized_expression "(uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0)" ( (comma_expression "uVar2 = paVar1->flags, (uVar2 & 0x200000) == 0" (assignment_expression "uVar2 = paVar1->flags" identifier = (field_expression "paVar1->flags" identifier -> field_identifier)) , (binary_expression "(uVar2 & 0x200000) == 0" (parenthesized_expression "(uVar2 & 0x200000)" ( (binary_expression "uVar2 & 0x200000" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n        pbVar3 = paVar1->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }\n      }" { (expression_statement "pbVar3 = paVar1->next;" (assignment_expression "pbVar3 = paVar1->next" identifier = (field_expression "paVar1->next" identifier -> field_identifier)) ;) (if_statement "if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar6->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }" if (parenthesized_expression "(pbVar3 == (bfd_section *)0x0)" ( (binary_expression "pbVar3 == (bfd_section *)0x0" identifier == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          paVar4 = pbVar6->section_last;\n        }" { (expression_statement "paVar4 = pbVar6->section_last;" (assignment_expression "paVar4 = pbVar6->section_last" identifier = (field_expression "pbVar6->section_last" identifier -> field_identifier)) ;) }) (else_clause "else {\n          paVar4 = pbVar3->prev;\n        }" else (compound_statement "{\n          paVar4 = pbVar3->prev;\n        }" { (expression_statement "paVar4 = pbVar3->prev;" (assignment_expression "paVar4 = pbVar3->prev" identifier = (field_expression "pbVar3->prev" identifier -> field_identifier)) ;) }))) (if_statement "if (paVar4 == paVar1) {\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }" if (parenthesized_expression "(paVar4 == paVar1)" ( (binary_expression "paVar4 == paVar1" identifier == identifier) )) (compound_statement "{\n          for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }\n          paVar1->flags = uVar2 | 0x8000;\n          pbVar5 = paVar1->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }\n          pbVar6->section_count = pbVar6->section_count - 1;\n        }" { (for_statement "for (pbVar5 = (paVar1->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }" for ( (assignment_expression "pbVar5 = (paVar1->map_head).s" identifier = (field_expression "(paVar1->map_head).s" (parenthesized_expression "(paVar1->map_head)" ( (field_expression "paVar1->map_head" identifier -> field_identifier) )) . field_identifier)) ; (binary_expression "pbVar5 != (bfd_section *)0x0" identifier != (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pbVar5 = (pbVar5->map_head).s" identifier = (field_expression "(pbVar5->map_head).s" (parenthesized_expression "(pbVar5->map_head)" ( (field_expression "pbVar5->map_head" identifier -> field_identifier) )) . field_identifier)) ) (compound_statement "{\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;\n          }" { (if_statement "if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))) goto LAB_00028b20;" if (parenthesized_expression "(((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0))))" ( (binary_expression "((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))" (parenthesized_expression "((pbVar5->flags & 0x8000) == 0)" ( (binary_expression "(pbVar5->flags & 0x8000) == 0" (parenthesized_expression "(pbVar5->flags & 0x8000)" ( (binary_expression "pbVar5->flags & 0x8000" (field_expression "pbVar5->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)))" ( (parenthesized_expression "((pbVar5->flags & 0x100000) != 0 || (bVar8 != 0))" ( (binary_expression "(pbVar5->flags & 0x100000) != 0 || (bVar8 != 0)" (binary_expression "(pbVar5->flags & 0x100000) != 0" (parenthesized_expression "(pbVar5->flags & 0x100000)" ( (binary_expression "pbVar5->flags & 0x100000" (field_expression "pbVar5->flags" identifier -> field_identifier) & number_literal) )) != number_literal) || (parenthesized_expression "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_00028b20;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0) {\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }" if (parenthesized_expression "((*(byte *)((int)plVar7 + 0x54) & 0x10) == 0)" ( (binary_expression "(*(byte *)((int)plVar7 + 0x54) & 0x10) == 0" (parenthesized_expression "(*(byte *)((int)plVar7 + 0x54) & 0x10)" ( (binary_expression "*(byte *)((int)plVar7 + 0x54) & 0x10" (pointer_expression "*(byte *)((int)plVar7 + 0x54)" * (cast_expression "(byte *)((int)plVar7 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)plVar7 + 0x54)" ( (binary_expression "(int)plVar7 + 0x54" (cast_expression "(int)plVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;\n          }" { (expression_statement "*(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8;" (assignment_expression "*(byte *)((int)plVar7 + 0x54) = *(byte *)((int)plVar7 + 0x54) | 8" (pointer_expression "*(byte *)((int)plVar7 + 0x54)" * (cast_expression "(byte *)((int)plVar7 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)plVar7 + 0x54)" ( (binary_expression "(int)plVar7 + 0x54" (cast_expression "(int)plVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)plVar7 + 0x54) | 8" (pointer_expression "*(byte *)((int)plVar7 + 0x54)" * (cast_expression "(byte *)((int)plVar7 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)plVar7 + 0x54)" ( (binary_expression "(int)plVar7 + 0x54" (cast_expression "(int)plVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (expression_statement "paVar1->flags = uVar2 | 0x8000;" (assignment_expression "paVar1->flags = uVar2 | 0x8000" (field_expression "paVar1->flags" identifier -> field_identifier) = (binary_expression "uVar2 | 0x8000" identifier | number_literal)) ;) (expression_statement "pbVar5 = paVar1->prev;" (assignment_expression "pbVar5 = paVar1->prev" identifier = (field_expression "paVar1->prev" identifier -> field_identifier)) ;) (if_statement "if (pbVar5 == (bfd_section *)0x0) {\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }\n          else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }" if (parenthesized_expression "(pbVar5 == (bfd_section *)0x0)" ( (binary_expression "pbVar5 == (bfd_section *)0x0" identifier == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pbVar6->sections = pbVar3;\n            if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;\nLAB_00028b69:\n            pbVar3->prev = pbVar5;\n          }" { (expression_statement "pbVar6->sections = pbVar3;" (assignment_expression "pbVar6->sections = pbVar3" (field_expression "pbVar6->sections" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar3 == (bfd_section *)0x0) goto LAB_00028b7f;" if (parenthesized_expression "(pbVar3 == (bfd_section *)0x0)" ( (binary_expression "pbVar3 == (bfd_section *)0x0" identifier == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028b7f;" goto statement_identifier ;)) (labeled_statement "LAB_00028b69:\n            pbVar3->prev = pbVar5;" statement_identifier : (expression_statement "pbVar3->prev = pbVar5;" (assignment_expression "pbVar3->prev = pbVar5" (field_expression "pbVar3->prev" identifier -> field_identifier) = identifier) ;)) }) (else_clause "else {\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }" else (compound_statement "{\n            pbVar5->next = pbVar3;\n            if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;\nLAB_00028b7f:\n            pbVar6->section_last = pbVar5;\n          }" { (expression_statement "pbVar5->next = pbVar3;" (assignment_expression "pbVar5->next = pbVar3" (field_expression "pbVar5->next" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar3 != (bfd_section *)0x0) goto LAB_00028b69;" if (parenthesized_expression "(pbVar3 != (bfd_section *)0x0)" ( (binary_expression "pbVar3 != (bfd_section *)0x0" identifier != (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028b69;" goto statement_identifier ;)) (labeled_statement "LAB_00028b7f:\n            pbVar6->section_last = pbVar5;" statement_identifier : (expression_statement "pbVar6->section_last = pbVar5;" (assignment_expression "pbVar6->section_last = pbVar5" (field_expression "pbVar6->section_last" identifier -> field_identifier) = identifier) ;)) }))) (expression_statement "pbVar6->section_count = pbVar6->section_count - 1;" (assignment_expression "pbVar6->section_count = pbVar6->section_count - 1" (field_expression "pbVar6->section_count" identifier -> field_identifier) = (binary_expression "pbVar6->section_count - 1" (field_expression "pbVar6->section_count" identifier -> field_identifier) - number_literal)) ;) })) })) (labeled_statement "LAB_00028b20:\n      plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;" statement_identifier : (expression_statement "plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list;" (assignment_expression "plVar7 = (lang_statement_union *)(plVar7->wild_statement).section_list" identifier = (cast_expression "(lang_statement_union *)(plVar7->wild_statement).section_list" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(plVar7->wild_statement).section_list" (parenthesized_expression "(plVar7->wild_statement)" ( (field_expression "plVar7->wild_statement" identifier -> field_identifier) )) . field_identifier))) ;)) }) while (parenthesized_expression "(plVar7 != (lang_statement_union *)0x0)" ( (binary_expression "plVar7 != (lang_statement_union *)0x0" identifier != (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00028a90(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  byte bVar7;\n  \n  if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }\n  iVar5 = DAT_001c4614;\n  if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00028a90(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  byte bVar7;\n  \n  if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }\n  iVar5 = DAT_001c4614;\n  if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00028a90(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  byte bVar7;\n  \n  if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }\n  iVar5 = DAT_001c4614;\n  if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (if_statement "if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }" if (parenthesized_expression "(DAT_001c4780 != 1)" ( (binary_expression "DAT_001c4780 != 1" identifier != number_literal) )) (compound_statement "{\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }" { (expression_statement "DAT_001c4780 = 1;" (assignment_expression "DAT_001c4780 = 1" identifier = number_literal) ;) (expression_statement "DAT_001c47b8 = 0;" (assignment_expression "DAT_001c47b8 = 0" identifier = number_literal) ;) (expression_statement "FUN_00027370(0,0);" (call_expression "FUN_00027370(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_000289f0();" (call_expression "FUN_000289f0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar5 = DAT_001c4614;" (assignment_expression "iVar5 = DAT_001c4614" identifier = identifier) ;) (if_statement "if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }" if (parenthesized_expression "(DAT_001c45a0 != 0)" ( (binary_expression "DAT_001c45a0 != 0" identifier != number_literal) )) (compound_statement "{\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }" { (expression_statement "bVar7 = DAT_001c45e3 & 8;" (assignment_expression "bVar7 = DAT_001c45e3 & 8" identifier = (binary_expression "DAT_001c45e3 & 8" identifier & number_literal)) ;) (expression_statement "iVar6 = DAT_001c45a0;" (assignment_expression "iVar6 = DAT_001c45a0" identifier = identifier) ;) (do_statement "do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);" do (compound_statement "{\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    }" { (if_statement "if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }" if (parenthesized_expression "((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0))" ( (binary_expression "(((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)" (parenthesized_expression "(((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0))" ( (binary_expression "((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)" (parenthesized_expression "((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0))" ( (binary_expression "(-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)" (parenthesized_expression "(-1 < *(int *)(iVar6 + 0x48))" ( (binary_expression "-1 < *(int *)(iVar6 + 0x48)" number_literal < (pointer_expression "*(int *)(iVar6 + 0x48)" * (cast_expression "(int *)(iVar6 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x48)" ( (binary_expression "iVar6 + 0x48" identifier + number_literal) ))))) )) && (parenthesized_expression "(iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)" ( (comma_expression "iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0" (assignment_expression "iVar1 = *(int *)(iVar6 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0" (binary_expression "*(int *)(iVar1 + 0x38) == 0" (pointer_expression "*(int *)(iVar1 + 0x38)" * (cast_expression "(int *)(iVar1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x38)" ( (binary_expression "iVar1 + 0x38" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(iVar1 + 0x34) == 0" (pointer_expression "*(int *)(iVar1 + 0x34)" * (cast_expression "(int *)(iVar1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) == number_literal)) ))) )) && (parenthesized_expression "(uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)" ( (comma_expression "uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) , (binary_expression "(uVar2 & 0x200000) == 0" (parenthesized_expression "(uVar2 & 0x200000)" ( (binary_expression "uVar2 & 0x200000" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }" { (expression_statement "iVar3 = *(int *)(iVar1 + 0xc);" (assignment_expression "iVar3 = *(int *)(iVar1 + 0xc)" identifier = (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar4 = *(int *)(iVar5 + 100);\n        }" { (expression_statement "iVar4 = *(int *)(iVar5 + 100);" (assignment_expression "iVar4 = *(int *)(iVar5 + 100)" identifier = (pointer_expression "*(int *)(iVar5 + 100)" * (cast_expression "(int *)(iVar5 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 100)" ( (binary_expression "iVar5 + 100" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" else (compound_statement "{\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" { (expression_statement "iVar4 = *(int *)(iVar3 + 0x10);" (assignment_expression "iVar4 = *(int *)(iVar3 + 0x10)" identifier = (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }" if (parenthesized_expression "(iVar4 == iVar1)" ( (binary_expression "iVar4 == iVar1" identifier == identifier) )) (compound_statement "{\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }" { (for_statement "for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }" for ( (assignment_expression "iVar4 = *(int *)(iVar1 + 0xb8)" identifier = (pointer_expression "*(int *)(iVar1 + 0xb8)" * (cast_expression "(int *)(iVar1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xb8)" ( (binary_expression "iVar1 + 0xb8" identifier + number_literal) ))))) ; (binary_expression "iVar4 != 0" identifier != number_literal) ; (assignment_expression "iVar4 = *(int *)(iVar4 + 0xb8)" identifier = (pointer_expression "*(int *)(iVar4 + 0xb8)" * (cast_expression "(int *)(iVar4 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb8)" ( (binary_expression "iVar4 + 0xb8" identifier + number_literal) ))))) ) (compound_statement "{\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }" { (if_statement "if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;" if (parenthesized_expression "(((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0))))" ( (binary_expression "((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))" (parenthesized_expression "((*(uint *)(iVar4 + 0x14) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(iVar4 + 0x14) & 0x8000)" ( (binary_expression "*(uint *)(iVar4 + 0x14) & 0x8000" (pointer_expression "*(uint *)(iVar4 + 0x14)" * (cast_expression "(uint *)(iVar4 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))" ( (parenthesized_expression "((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0))" ( (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)" (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x100000) != 0" (parenthesized_expression "(*(uint *)(iVar4 + 0x14) & 0x100000)" ( (binary_expression "*(uint *)(iVar4 + 0x14) & 0x100000" (pointer_expression "*(uint *)(iVar4 + 0x14)" * (cast_expression "(uint *)(iVar4 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) || (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_00028b20;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }" if (parenthesized_expression "((*(byte *)(iVar6 + 0x54) & 0x10) == 0)" ( (binary_expression "(*(byte *)(iVar6 + 0x54) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x54) & 0x10)" ( (binary_expression "*(byte *)(iVar6 + 0x54) & 0x10" (pointer_expression "*(byte *)(iVar6 + 0x54)" * (cast_expression "(byte *)(iVar6 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x54)" ( (binary_expression "iVar6 + 0x54" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }" { (expression_statement "*(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;" (assignment_expression "*(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8" (pointer_expression "*(byte *)(iVar6 + 0x54)" * (cast_expression "(byte *)(iVar6 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x54)" ( (binary_expression "iVar6 + 0x54" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar6 + 0x54) | 8" (pointer_expression "*(byte *)(iVar6 + 0x54)" * (cast_expression "(byte *)(iVar6 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x54)" ( (binary_expression "iVar6 + 0x54" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "*(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;" (assignment_expression "*(uint *)(iVar1 + 0x14) = uVar2 | 0x8000" (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) = (binary_expression "uVar2 | 0x8000" identifier | number_literal)) ;) (expression_statement "iVar1 = *(int *)(iVar1 + 0x10);" (assignment_expression "iVar1 = *(int *)(iVar1 + 0x10)" identifier = (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }" { (expression_statement "*(int *)(iVar5 + 0x60) = iVar3;" (assignment_expression "*(int *)(iVar5 + 0x60) = iVar3" (pointer_expression "*(int *)(iVar5 + 0x60)" * (cast_expression "(int *)(iVar5 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x60)" ( (binary_expression "iVar5 + 0x60" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar3 == 0) goto LAB_00028b7f;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028b7f;" goto statement_identifier ;)) (labeled_statement "LAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;" statement_identifier : (expression_statement "*(int *)(iVar3 + 0x10) = iVar1;" (assignment_expression "*(int *)(iVar3 + 0x10) = iVar1" (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) = identifier) ;)) }) (else_clause "else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" else (compound_statement "{\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" { (expression_statement "*(int *)(iVar1 + 0xc) = iVar3;" (assignment_expression "*(int *)(iVar1 + 0xc) = iVar3" (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar3 != 0) goto LAB_00028b69;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028b69;" goto statement_identifier ;)) (labeled_statement "LAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;" statement_identifier : (expression_statement "*(int *)(iVar5 + 100) = iVar1;" (assignment_expression "*(int *)(iVar5 + 100) = iVar1" (pointer_expression "*(int *)(iVar5 + 100)" * (cast_expression "(int *)(iVar5 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 100)" ( (binary_expression "iVar5 + 100" identifier + number_literal) )))) = identifier) ;)) }))) (expression_statement "*(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;" (assignment_expression "*(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1" (pointer_expression "*(int *)(iVar5 + 0x68)" * (cast_expression "(int *)(iVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x68)" ( (binary_expression "iVar5 + 0x68" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 0x68) + -1" (pointer_expression "*(int *)(iVar5 + 0x68)" * (cast_expression "(int *)(iVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x68)" ( (binary_expression "iVar5 + 0x68" identifier + number_literal) )))) + number_literal)) ;) })) })) (labeled_statement "LAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);" statement_identifier : (expression_statement "iVar6 = *(int *)(iVar6 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar6 + 0x10)" identifier = (pointer_expression "*(int *)(iVar6 + 0x10)" * (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;)) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 IDENT != LIT)) ))) )) && (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (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 (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (if_statement if (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) )) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_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 ( (binary_expression IDENT != LIT) ))) )) ))) )) (goto_statement goto statement_identifier ;)) })) (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) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00028a90(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  byte bVar7;\n  \n  if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }\n  iVar5 = DAT_001c4614;\n  if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00028a90(void)" (identifier "FUN_00028a90") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  byte bVar7;\n  \n  if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }\n  iVar5 = DAT_001c4614;\n  if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (if_statement "if (DAT_001c4780 != 1) {\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }" (if "if") (parenthesized_expression "(DAT_001c4780 != 1)" (( "(") (binary_expression "DAT_001c4780 != 1" (identifier "DAT_001c4780") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    DAT_001c4780 = 1;\n    DAT_001c47b8 = 0;\n    FUN_00027370(0,0);\n    FUN_000289f0();\n  }" ({ "{") (expression_statement "DAT_001c4780 = 1;" (assignment_expression "DAT_001c4780 = 1" (identifier "DAT_001c4780") (= "=") (number_literal "1")) (; ";")) (expression_statement "DAT_001c47b8 = 0;" (assignment_expression "DAT_001c47b8 = 0" (identifier "DAT_001c47b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00027370(0,0);" (call_expression "FUN_00027370(0,0)" (identifier "FUN_00027370") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000289f0();" (call_expression "FUN_000289f0()" (identifier "FUN_000289f0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = DAT_001c4614;" (assignment_expression "iVar5 = DAT_001c4614" (identifier "iVar5") (= "=") (identifier "DAT_001c4614")) (; ";")) (if_statement "if (DAT_001c45a0 != 0) {\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }" (if "if") (parenthesized_expression "(DAT_001c45a0 != 0)" (( "(") (binary_expression "DAT_001c45a0 != 0" (identifier "DAT_001c45a0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    bVar7 = DAT_001c45e3 & 8;\n    iVar6 = DAT_001c45a0;\n    do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);\n  }" ({ "{") (expression_statement "bVar7 = DAT_001c45e3 & 8;" (assignment_expression "bVar7 = DAT_001c45e3 & 8" (identifier "bVar7") (= "=") (binary_expression "DAT_001c45e3 & 8" (identifier "DAT_001c45e3") (& "&") (number_literal "8"))) (; ";")) (expression_statement "iVar6 = DAT_001c45a0;" (assignment_expression "iVar6 = DAT_001c45a0" (identifier "iVar6") (= "=") (identifier "DAT_001c45a0")) (; ";")) (do_statement "do {\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    } while (iVar6 != 0);" (do "do") (compound_statement "{\n      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }\nLAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);\n    }" ({ "{") (if_statement "if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }" (if "if") (parenthesized_expression "((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0))" (( "(") (binary_expression "(((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&\n         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)" (parenthesized_expression "(((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0))" (( "(") (binary_expression "((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&\n          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)" (parenthesized_expression "((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0))" (( "(") (binary_expression "(-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)" (parenthesized_expression "(-1 < *(int *)(iVar6 + 0x48))" (( "(") (binary_expression "-1 < *(int *)(iVar6 + 0x48)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(iVar6 + 0x48)" (* "*") (cast_expression "(int *)(iVar6 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x48)" (( "(") (binary_expression "iVar6 + 0x48" (identifier "iVar6") (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)" (( "(") (comma_expression "iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0" (assignment_expression "iVar1 = *(int *)(iVar6 + 0x1c)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar6 + 0x1c)" (* "*") (cast_expression "(int *)(iVar6 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")"))))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0" (binary_expression "*(int *)(iVar1 + 0x38) == 0" (pointer_expression "*(int *)(iVar1 + 0x38)" (* "*") (cast_expression "(int *)(iVar1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x38)" (( "(") (binary_expression "iVar1 + 0x38" (identifier "iVar1") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "*(int *)(iVar1 + 0x34) == 0" (pointer_expression "*(int *)(iVar1 + 0x34)" (* "*") (cast_expression "(int *)(iVar1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x34)" (( "(") (binary_expression "iVar1 + 0x34" (identifier "iVar1") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)" (( "(") (comma_expression "uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x14)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x14)" (* "*") (cast_expression "(uint *)(iVar1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")"))))) (, ",") (binary_expression "(uVar2 & 0x200000) == 0" (parenthesized_expression "(uVar2 & 0x200000)" (( "(") (binary_expression "uVar2 & 0x200000" (identifier "uVar2") (& "&") (number_literal "0x200000")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        iVar3 = *(int *)(iVar1 + 0xc);\n        if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }\n        if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }\n      }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar1 + 0xc);" (assignment_expression "iVar3 = *(int *)(iVar1 + 0xc)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar1 + 0xc)" (* "*") (cast_expression "(int *)(iVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar3 == 0) {\n          iVar4 = *(int *)(iVar5 + 100);\n        }\n        else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar4 = *(int *)(iVar5 + 100);\n        }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar5 + 100);" (assignment_expression "iVar4 = *(int *)(iVar5 + 100)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar5 + 100)" (* "*") (cast_expression "(int *)(iVar5 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 100)" (( "(") (binary_expression "iVar5 + 100" (identifier "iVar5") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" (else "else") (compound_statement "{\n          iVar4 = *(int *)(iVar3 + 0x10);\n        }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar3 + 0x10);" (assignment_expression "iVar4 = *(int *)(iVar3 + 0x10)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar4 == iVar1) {\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }" (if "if") (parenthesized_expression "(iVar4 == iVar1)" (( "(") (binary_expression "iVar4 == iVar1" (identifier "iVar4") (== "==") (identifier "iVar1")) () ")")) (compound_statement "{\n          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }\n          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }\n          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;\n          iVar1 = *(int *)(iVar1 + 0x10);\n          if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }\n          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;\n        }" ({ "{") (for_statement "for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }" (for "for") (( "(") (assignment_expression "iVar4 = *(int *)(iVar1 + 0xb8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar1 + 0xb8)" (* "*") (cast_expression "(int *)(iVar1 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xb8)" (( "(") (binary_expression "iVar1 + 0xb8" (identifier "iVar1") (+ "+") (number_literal "0xb8")) () ")"))))) (; ";") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar4 = *(int *)(iVar4 + 0xb8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar4 + 0xb8)" (* "*") (cast_expression "(int *)(iVar4 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xb8)" (( "(") (binary_expression "iVar4 + 0xb8" (identifier "iVar4") (+ "+") (number_literal "0xb8")) () ")"))))) () ")") (compound_statement "{\n            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;\n          }" ({ "{") (if_statement "if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;" (if "if") (parenthesized_expression "(((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0))))" (( "(") (binary_expression "((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&\n               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))" (parenthesized_expression "((*(uint *)(iVar4 + 0x14) & 0x8000) == 0)" (( "(") (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(iVar4 + 0x14) & 0x8000)" (( "(") (binary_expression "*(uint *)(iVar4 + 0x14) & 0x8000" (pointer_expression "*(uint *)(iVar4 + 0x14)" (* "*") (cast_expression "(uint *)(iVar4 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0x8000")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))" (( "(") (parenthesized_expression "((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0))" (( "(") (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)" (binary_expression "(*(uint *)(iVar4 + 0x14) & 0x100000) != 0" (parenthesized_expression "(*(uint *)(iVar4 + 0x14) & 0x100000)" (( "(") (binary_expression "*(uint *)(iVar4 + 0x14) & 0x100000" (pointer_expression "*(uint *)(iVar4 + 0x14)" (* "*") (cast_expression "(uint *)(iVar4 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0x100000")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(bVar7 != 0)" (( "(") (binary_expression "bVar7 != 0" (identifier "bVar7") (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00028b20;" (goto "goto") (statement_identifier "LAB_00028b20") (; ";"))) (} "}"))) (if_statement "if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }" (if "if") (parenthesized_expression "((*(byte *)(iVar6 + 0x54) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(iVar6 + 0x54) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x54) & 0x10)" (( "(") (binary_expression "*(byte *)(iVar6 + 0x54) & 0x10" (pointer_expression "*(byte *)(iVar6 + 0x54)" (* "*") (cast_expression "(byte *)(iVar6 + 0x54)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x54)" (( "(") (binary_expression "iVar6 + 0x54" (identifier "iVar6") (+ "+") (number_literal "0x54")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;\n          }" ({ "{") (expression_statement "*(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;" (assignment_expression "*(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8" (pointer_expression "*(byte *)(iVar6 + 0x54)" (* "*") (cast_expression "(byte *)(iVar6 + 0x54)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x54)" (( "(") (binary_expression "iVar6 + 0x54" (identifier "iVar6") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (binary_expression "*(byte *)(iVar6 + 0x54) | 8" (pointer_expression "*(byte *)(iVar6 + 0x54)" (* "*") (cast_expression "(byte *)(iVar6 + 0x54)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x54)" (( "(") (binary_expression "iVar6 + 0x54" (identifier "iVar6") (+ "+") (number_literal "0x54")) () ")")))) (| "|") (number_literal "8"))) (; ";")) (} "}"))) (expression_statement "*(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;" (assignment_expression "*(uint *)(iVar1 + 0x14) = uVar2 | 0x8000" (pointer_expression "*(uint *)(iVar1 + 0x14)" (* "*") (cast_expression "(uint *)(iVar1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "uVar2 | 0x8000" (identifier "uVar2") (| "|") (number_literal "0x8000"))) (; ";")) (expression_statement "iVar1 = *(int *)(iVar1 + 0x10);" (assignment_expression "iVar1 = *(int *)(iVar1 + 0x10)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar1 + 0x10)" (* "*") (cast_expression "(int *)(iVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0) {\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }\n          else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(int *)(iVar5 + 0x60) = iVar3;\n            if (iVar3 == 0) goto LAB_00028b7f;\nLAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;\n          }" ({ "{") (expression_statement "*(int *)(iVar5 + 0x60) = iVar3;" (assignment_expression "*(int *)(iVar5 + 0x60) = iVar3" (pointer_expression "*(int *)(iVar5 + 0x60)" (* "*") (cast_expression "(int *)(iVar5 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x60)" (( "(") (binary_expression "iVar5 + 0x60" (identifier "iVar5") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar3 == 0) goto LAB_00028b7f;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028b7f;" (goto "goto") (statement_identifier "LAB_00028b7f") (; ";"))) (labeled_statement "LAB_00028b69:\n            *(int *)(iVar3 + 0x10) = iVar1;" (statement_identifier "LAB_00028b69") (: ":") (expression_statement "*(int *)(iVar3 + 0x10) = iVar1;" (assignment_expression "*(int *)(iVar3 + 0x10) = iVar1" (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar1")) (; ";"))) (} "}")) (else_clause "else {\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" (else "else") (compound_statement "{\n            *(int *)(iVar1 + 0xc) = iVar3;\n            if (iVar3 != 0) goto LAB_00028b69;\nLAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;\n          }" ({ "{") (expression_statement "*(int *)(iVar1 + 0xc) = iVar3;" (assignment_expression "*(int *)(iVar1 + 0xc) = iVar3" (pointer_expression "*(int *)(iVar1 + 0xc)" (* "*") (cast_expression "(int *)(iVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_00028b69;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028b69;" (goto "goto") (statement_identifier "LAB_00028b69") (; ";"))) (labeled_statement "LAB_00028b7f:\n            *(int *)(iVar5 + 100) = iVar1;" (statement_identifier "LAB_00028b7f") (: ":") (expression_statement "*(int *)(iVar5 + 100) = iVar1;" (assignment_expression "*(int *)(iVar5 + 100) = iVar1" (pointer_expression "*(int *)(iVar5 + 100)" (* "*") (cast_expression "(int *)(iVar5 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 100)" (( "(") (binary_expression "iVar5 + 100" (identifier "iVar5") (+ "+") (number_literal "100")) () ")")))) (= "=") (identifier "iVar1")) (; ";"))) (} "}")))) (expression_statement "*(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;" (assignment_expression "*(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1" (pointer_expression "*(int *)(iVar5 + 0x68)" (* "*") (cast_expression "(int *)(iVar5 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x68)" (( "(") (binary_expression "iVar5 + 0x68" (identifier "iVar5") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (binary_expression "*(int *)(iVar5 + 0x68) + -1" (pointer_expression "*(int *)(iVar5 + 0x68)" (* "*") (cast_expression "(int *)(iVar5 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x68)" (( "(") (binary_expression "iVar5 + 0x68" (identifier "iVar5") (+ "+") (number_literal "0x68")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00028b20:\n      iVar6 = *(int *)(iVar6 + 0x10);" (statement_identifier "LAB_00028b20") (: ":") (expression_statement "iVar6 = *(int *)(iVar6 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar6 + 0x10)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar6 + 0x10)" (* "*") (cast_expression "(int *)(iVar6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  type_1 *var_4;
  type_2 var_5;
  type_3 *var_6;
  type_1 *var_7;
  type_3 *var_8;
  type_4 *pbVar6;
  type_5 *var_10;
  type_6 var_9;
  
  if (expld.phase != var_1) {
    expld.phase = var_1;
    expld.dataseg.phase = exp_seg_none;
    var_2((type_7 *)0x0,0);
    var_3();
  }
  pbVar6 = link_info.output_bfd;
  if (lang_output_section_statement.head != (type_5 *)0x0) {
    var_9 = link_info._3_1_ & 8;
    var_10 = lang_output_section_statement.head;
    do {
      if ((((-1 < (var_10->output_section_statement).constraint) &&
           (var_4 = (var_10->output_section_statement).type_3, var_4 != (type_1 *)0x0)) &&
          (*(int *)((int)&var_4->rawsize + 4) == 0 && (int)var_4->rawsize == 0)) &&
         (var_5 = var_4->flags, (var_5 & 0x200000) == 0)) {
        var_6 = var_4->next;
        if (var_6 == (type_3 *)0x0) {
          var_7 = pbVar6->section_last;
        }
        else {
          var_7 = var_6->prev;
        }
        if (var_7 == var_4) {
          for (var_8 = (var_4->map_head).s; var_8 != (type_3 *)0x0;
              var_8 = (var_8->map_head).s) {
            if (((var_8->flags & 0x8000) == 0) &&
               (((var_8->flags & 0x100000) != 0 || (var_9 != 0)))) goto LAB_00028b20;
          }
          if ((*(type_6 *)((int)var_10 + 0x54) & 0x10) == 0) {
            *(type_6 *)((int)var_10 + 0x54) = *(type_6 *)((int)var_10 + 0x54) | 8;
          }
          var_4->flags = var_5 | 0x8000;
          var_8 = var_4->prev;
          if (var_8 == (type_3 *)0x0) {
            pbVar6->sections = var_6;
            if (var_6 == (type_3 *)0x0) goto LAB_00028b7f;
LAB_00028b69:
            var_6->prev = var_8;
          }
          else {
            var_8->next = var_6;
            if (var_6 != (type_3 *)0x0) goto LAB_00028b69;
LAB_00028b7f:
            pbVar6->section_last = var_8;
          }
          pbVar6->section_count = pbVar6->section_count - 1;
        }
      }
LAB_00028b20:
      var_10 = (type_5 *)(var_10->wild_statement).section_list;
    } while (var_10 != (type_5 *)0x0);
  }
  return;
}


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

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

void MASKED(void)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  byte bVar7;
  
  if (DAT_001c4780 != 1) {
    DAT_001c4780 = 1;
    DAT_001c47b8 = 0;
    FUN_00027370(0,0);
    FUN_000289f0();
  }
  iVar5 = DAT_001c4614;
  if (DAT_001c45a0 != 0) {
    bVar7 = DAT_001c45e3 & 8;
    iVar6 = DAT_001c45a0;
    do {
      if ((((-1 < *(int *)(iVar6 + 0x48)) && (iVar1 = *(int *)(iVar6 + 0x1c), iVar1 != 0)) &&
          (*(int *)(iVar1 + 0x38) == 0 && *(int *)(iVar1 + 0x34) == 0)) &&
         (uVar2 = *(uint *)(iVar1 + 0x14), (uVar2 & 0x200000) == 0)) {
        iVar3 = *(int *)(iVar1 + 0xc);
        if (iVar3 == 0) {
          iVar4 = *(int *)(iVar5 + 100);
        }
        else {
          iVar4 = *(int *)(iVar3 + 0x10);
        }
        if (iVar4 == iVar1) {
          for (iVar4 = *(int *)(iVar1 + 0xb8); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xb8)) {
            if (((*(uint *)(iVar4 + 0x14) & 0x8000) == 0) &&
               (((*(uint *)(iVar4 + 0x14) & 0x100000) != 0 || (bVar7 != 0)))) goto LAB_00028b20;
          }
          if ((*(byte *)(iVar6 + 0x54) & 0x10) == 0) {
            *(byte *)(iVar6 + 0x54) = *(byte *)(iVar6 + 0x54) | 8;
          }
          *(uint *)(iVar1 + 0x14) = uVar2 | 0x8000;
          iVar1 = *(int *)(iVar1 + 0x10);
          if (iVar1 == 0) {
            *(int *)(iVar5 + 0x60) = iVar3;
            if (iVar3 == 0) goto LAB_00028b7f;
LAB_00028b69:
            *(int *)(iVar3 + 0x10) = iVar1;
          }
          else {
            *(int *)(iVar1 + 0xc) = iVar3;
            if (iVar3 != 0) goto LAB_00028b69;
LAB_00028b7f:
            *(int *)(iVar5 + 100) = iVar1;
          }
          *(int *)(iVar5 + 0x68) = *(int *)(iVar5 + 0x68) + -1;
        }
      }
LAB_00028b20:
      iVar6 = *(int *)(iVar6 + 0x10);
    } while (iVar6 != 0);
  }
  return;
}

