
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void strip_excluded_output_sections(void)

{
  uint uVar1;
  asection *paVar2;
  bfd_section *pbVar3;
  asection *paVar4;
  bfd_section *pbVar5;
  byte bVar6;
  bfd *pbVar7;
  lang_statement_union *plVar8;
  
  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();
  }
  pbVar7 = link_info.output_bfd;
  if (lang_output_section_statement.head != (lang_statement_union *)0x0) {
    bVar6 = link_info._3_1_ & 8;
    plVar8 = lang_output_section_statement.head;
    do {
      if ((((-1 < (plVar8->output_section_statement).constraint) &&
           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&
          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {
        pbVar3 = paVar2->next;
        if (pbVar3 == (bfd_section *)0x0) {
          paVar4 = pbVar7->section_last;
        }
        else {
          paVar4 = pbVar3->prev;
        }
        if (paVar4 == paVar2) {
          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;
              pbVar5 = (pbVar5->map_head).s) {
            if (((pbVar5->flags & 0x8000) == 0) &&
               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;
          }
          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {
            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;
          }
          paVar2->flags = uVar1 | 0x8000;
          pbVar5 = paVar2->prev;
          if (pbVar5 == (bfd_section *)0x0) {
            pbVar7->sections = pbVar3;
          }
          else {
            pbVar5->next = pbVar3;
          }
          if (pbVar3 == (bfd_section *)0x0) {
            pbVar7->section_last = pbVar5;
          }
          else {
            pbVar3->prev = pbVar5;
          }
          pbVar7->section_count = pbVar7->section_count - 1;
        }
      }
LAB_00119f88:
      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;
    } while (plVar8 != (lang_statement_union *)0x0);
  }
  return;
}



void FUN_00119f00(void)

{
  uint uVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  byte bVar5;
  long lVar6;
  long lVar7;
  
  if (DAT_00182fa0 != 1) {
    DAT_00182fa0 = 1;
    DAT_00182ff8 = 0;
    FUN_00118870(0,0);
    FUN_00119e80();
  }
  lVar6 = DAT_00182db0;
  if (DAT_00182d00 != 0) {
    bVar5 = DAT_00182d63 & 8;
    lVar7 = DAT_00182d00;
    do {
      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&
          (*(long *)(lVar2 + 0x40) == 0)) &&
         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {
        lVar3 = *(long *)(lVar2 + 0x10);
        if (lVar3 == 0) {
          lVar4 = *(long *)(lVar6 + 0x98);
        }
        else {
          lVar4 = *(long *)(lVar3 + 0x18);
        }
        if (lVar4 == lVar2) {
          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {
            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&
               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;
          }
          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {
            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;
          }
          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;
          lVar2 = *(long *)(lVar2 + 0x18);
          if (lVar2 == 0) {
            *(long *)(lVar6 + 0x90) = lVar3;
          }
          else {
            *(long *)(lVar2 + 0x10) = lVar3;
          }
          if (lVar3 == 0) {
            *(long *)(lVar6 + 0x98) = lVar2;
          }
          else {
            *(long *)(lVar3 + 0x18) = lVar2;
          }
          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;
        }
      }
LAB_00119f88:
      lVar7 = *(long *)(lVar7 + 0x20);
    } while (lVar7 != 0);
  }
  return;
}


SUB RSP,0x8
CMP dword ptr [0x00182fa0],0x1
JZ 0x00119f2f
MOV dword ptr [0x00182fa0],0x1
XOR ESI,ESI
XOR EDI,EDI
MOV dword ptr [0x00182ff8],0x0
CALL 0x00118870
CALL 0x00119e80
MOV RAX,qword ptr [0x00182d00]
TEST RAX,RAX
JZ 0x00119f91
MOVZX R10D,byte ptr [0x00182d63]
MOV R8,qword ptr [0x00182db0]
AND R10D,0x8
NOP
MOV EDX,dword ptr [RAX + 0x84]
TEST EDX,EDX
JS 0x00119f88
MOV RDX,qword ptr [RAX + 0x38]
TEST RDX,RDX
JZ 0x00119f88
CMP qword ptr [RDX + 0x40],0x0
JNZ 0x00119f88
MOV ECX,dword ptr [RDX + 0x20]
TEST ECX,0x200000
JNZ 0x00119f88
MOV RSI,qword ptr [RDX + 0x10]
TEST RSI,RSI
JZ 0x00119fa0
CMP qword ptr [RSI + 0x18],RDX
JZ 0x00119fa9
NOP dword ptr [RAX]
MOV RAX,qword ptr [RAX + 0x20]
TEST RAX,RAX
JNZ 0x00119f50
ADD RSP,0x8
RET
CMP qword ptr [R8 + 0x98],RDX
JNZ 0x00119f88
MOV RDI,qword ptr [RDX + 0x108]
TEST RDI,RDI
JNZ 0x00119ff8
MOVZX EDI,byte ptr [RAX + 0x90]
TEST DIL,0x10
JNZ 0x00119fcc
OR EDI,0x8
MOV byte ptr [RAX + 0x90],DIL
OR CH,0x80
MOV dword ptr [RDX + 0x20],ECX
MOV RDX,qword ptr [RDX + 0x18]
TEST RDX,RDX
JZ 0x0011a040
MOV qword ptr [RDX + 0x10],RSI
TEST RSI,RSI
JZ 0x0011a030
MOV qword ptr [RSI + 0x18],RDX
SUB dword ptr [R8 + 0xa0],0x1
JMP 0x00119f88
MOV R9D,dword ptr [RDI + 0x20]
TEST R9D,0x8000
JNZ 0x0011a01b
AND R9D,0x100000
JNZ 0x00119f88
TEST R10B,R10B
JNZ 0x00119f88
MOV RDI,qword ptr [RDI + 0x108]
TEST RDI,RDI
JNZ 0x00119ff8
JMP 0x00119fb5
MOV qword ptr [R8 + 0x98],RDX
JMP 0x00119fe8
MOV qword ptr [R8 + 0x90],RSI
JMP 0x00119fdf
(translation_unit "void FUN_00119f00(void)\n\n{\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  byte bVar5;\n  long lVar6;\n  long lVar7;\n  \n  if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }\n  lVar6 = DAT_00182db0;\n  if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00119f00(void)\n\n{\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  byte bVar5;\n  long lVar6;\n  long lVar7;\n  \n  if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }\n  lVar6 = DAT_00182db0;\n  if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00119f00(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  byte bVar5;\n  long lVar6;\n  long lVar7;\n  \n  if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }\n  lVar6 = DAT_00182db0;\n  if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }" if (parenthesized_expression "(DAT_00182fa0 != 1)" ( (binary_expression "DAT_00182fa0 != 1" identifier != number_literal) )) (compound_statement "{\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }" { (expression_statement "DAT_00182fa0 = 1;" (assignment_expression "DAT_00182fa0 = 1" identifier = number_literal) ;) (expression_statement "DAT_00182ff8 = 0;" (assignment_expression "DAT_00182ff8 = 0" identifier = number_literal) ;) (expression_statement "FUN_00118870(0,0);" (call_expression "FUN_00118870(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_00119e80();" (call_expression "FUN_00119e80()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "lVar6 = DAT_00182db0;" (assignment_expression "lVar6 = DAT_00182db0" identifier = identifier) ;) (if_statement "if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }" if (parenthesized_expression "(DAT_00182d00 != 0)" ( (binary_expression "DAT_00182d00 != 0" identifier != number_literal) )) (compound_statement "{\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }" { (expression_statement "bVar5 = DAT_00182d63 & 8;" (assignment_expression "bVar5 = DAT_00182d63 & 8" identifier = (binary_expression "DAT_00182d63 & 8" identifier & number_literal)) ;) (expression_statement "lVar7 = DAT_00182d00;" (assignment_expression "lVar7 = DAT_00182d00" identifier = identifier) ;) (do_statement "do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);" do (compound_statement "{\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    }" { (if_statement "if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }" if (parenthesized_expression "((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0))" ( (binary_expression "(((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)" (parenthesized_expression "(((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0))" ( (binary_expression "((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)" (parenthesized_expression "((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0))" ( (binary_expression "(-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)" (parenthesized_expression "(-1 < *(int *)(lVar7 + 0x84))" ( (binary_expression "-1 < *(int *)(lVar7 + 0x84)" number_literal < (pointer_expression "*(int *)(lVar7 + 0x84)" * (cast_expression "(int *)(lVar7 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x84)" ( (binary_expression "lVar7 + 0x84" identifier + number_literal) ))))) )) && (parenthesized_expression "(lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)" ( (comma_expression "lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0" (assignment_expression "lVar2 = *(long *)(lVar7 + 0x38)" identifier = (pointer_expression "*(long *)(lVar7 + 0x38)" * (cast_expression "(long *)(lVar7 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x38)" ( (binary_expression "lVar7 + 0x38" identifier + number_literal) ))))) , (binary_expression "lVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(long *)(lVar2 + 0x40) == 0)" ( (binary_expression "*(long *)(lVar2 + 0x40) == 0" (pointer_expression "*(long *)(lVar2 + 0x40)" * (cast_expression "(long *)(lVar2 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x40)" ( (binary_expression "lVar2 + 0x40" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)" ( (comma_expression "uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0" (assignment_expression "uVar1 = *(uint *)(lVar2 + 0x20)" identifier = (pointer_expression "*(uint *)(lVar2 + 0x20)" * (cast_expression "(uint *)(lVar2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) , (binary_expression "(uVar1 & 0x200000) == 0" (parenthesized_expression "(uVar1 & 0x200000)" ( (binary_expression "uVar1 & 0x200000" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }" { (expression_statement "lVar3 = *(long *)(lVar2 + 0x10);" (assignment_expression "lVar3 = *(long *)(lVar2 + 0x10)" identifier = (pointer_expression "*(long *)(lVar2 + 0x10)" * (cast_expression "(long *)(lVar2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }" { (expression_statement "lVar4 = *(long *)(lVar6 + 0x98);" (assignment_expression "lVar4 = *(long *)(lVar6 + 0x98)" identifier = (pointer_expression "*(long *)(lVar6 + 0x98)" * (cast_expression "(long *)(lVar6 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x98)" ( (binary_expression "lVar6 + 0x98" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" else (compound_statement "{\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" { (expression_statement "lVar4 = *(long *)(lVar3 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar3 + 0x18)" identifier = (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) ))))) ;) }))) (if_statement "if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }" if (parenthesized_expression "(lVar4 == lVar2)" ( (binary_expression "lVar4 == lVar2" identifier == identifier) )) (compound_statement "{\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }" { (for_statement "for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }" for ( (assignment_expression "lVar4 = *(long *)(lVar2 + 0x108)" identifier = (pointer_expression "*(long *)(lVar2 + 0x108)" * (cast_expression "(long *)(lVar2 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x108)" ( (binary_expression "lVar2 + 0x108" identifier + number_literal) ))))) ; (binary_expression "lVar4 != 0" identifier != number_literal) ; (assignment_expression "lVar4 = *(long *)(lVar4 + 0x108)" identifier = (pointer_expression "*(long *)(lVar4 + 0x108)" * (cast_expression "(long *)(lVar4 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x108)" ( (binary_expression "lVar4 + 0x108" identifier + number_literal) ))))) ) (compound_statement "{\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }" { (if_statement "if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;" if (parenthesized_expression "(((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0))))" ( (binary_expression "((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))" (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x8000)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x8000" (pointer_expression "*(uint *)(lVar4 + 0x20)" * (cast_expression "(uint *)(lVar4 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))" ( (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0))" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)" (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x100000) != 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x100000)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x100000" (pointer_expression "*(uint *)(lVar4 + 0x20)" * (cast_expression "(uint *)(lVar4 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) || (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_00119f88;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }" if (parenthesized_expression "((*(byte *)(lVar7 + 0x90) & 0x10) == 0)" ( (binary_expression "(*(byte *)(lVar7 + 0x90) & 0x10) == 0" (parenthesized_expression "(*(byte *)(lVar7 + 0x90) & 0x10)" ( (binary_expression "*(byte *)(lVar7 + 0x90) & 0x10" (pointer_expression "*(byte *)(lVar7 + 0x90)" * (cast_expression "(byte *)(lVar7 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x90)" ( (binary_expression "lVar7 + 0x90" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }" { (expression_statement "*(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;" (assignment_expression "*(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8" (pointer_expression "*(byte *)(lVar7 + 0x90)" * (cast_expression "(byte *)(lVar7 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x90)" ( (binary_expression "lVar7 + 0x90" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar7 + 0x90) | 8" (pointer_expression "*(byte *)(lVar7 + 0x90)" * (cast_expression "(byte *)(lVar7 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x90)" ( (binary_expression "lVar7 + 0x90" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "*(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;" (assignment_expression "*(uint *)(lVar2 + 0x20) = uVar1 | 0x8000" (pointer_expression "*(uint *)(lVar2 + 0x20)" * (cast_expression "(uint *)(lVar2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) = (binary_expression "uVar1 | 0x8000" identifier | number_literal)) ;) (expression_statement "lVar2 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar2 = *(long *)(lVar2 + 0x18)" identifier = (pointer_expression "*(long *)(lVar2 + 0x18)" * (cast_expression "(long *)(lVar2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }" { (expression_statement "*(long *)(lVar6 + 0x90) = lVar3;" (assignment_expression "*(long *)(lVar6 + 0x90) = lVar3" (pointer_expression "*(long *)(lVar6 + 0x90)" * (cast_expression "(long *)(lVar6 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x90)" ( (binary_expression "lVar6 + 0x90" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" else (compound_statement "{\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" { (expression_statement "*(long *)(lVar2 + 0x10) = lVar3;" (assignment_expression "*(long *)(lVar2 + 0x10) = lVar3" (pointer_expression "*(long *)(lVar2 + 0x10)" * (cast_expression "(long *)(lVar2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }" { (expression_statement "*(long *)(lVar6 + 0x98) = lVar2;" (assignment_expression "*(long *)(lVar6 + 0x98) = lVar2" (pointer_expression "*(long *)(lVar6 + 0x98)" * (cast_expression "(long *)(lVar6 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x98)" ( (binary_expression "lVar6 + 0x98" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" else (compound_statement "{\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" { (expression_statement "*(long *)(lVar3 + 0x18) = lVar2;" (assignment_expression "*(long *)(lVar3 + 0x18) = lVar2" (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;" (assignment_expression "*(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1" (pointer_expression "*(int *)(lVar6 + 0xa0)" * (cast_expression "(int *)(lVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xa0)" ( (binary_expression "lVar6 + 0xa0" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar6 + 0xa0) + -1" (pointer_expression "*(int *)(lVar6 + 0xa0)" * (cast_expression "(int *)(lVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xa0)" ( (binary_expression "lVar6 + 0xa0" identifier + number_literal) )))) + number_literal)) ;) })) })) (labeled_statement "LAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);" statement_identifier : (expression_statement "lVar7 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar7 = *(long *)(lVar7 + 0x20)" identifier = (pointer_expression "*(long *)(lVar7 + 0x20)" * (cast_expression "(long *)(lVar7 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x20)" ( (binary_expression "lVar7 + 0x20" identifier + number_literal) ))))) ;)) }) while (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid strip_excluded_output_sections(void)\n\n{\n  uint uVar1;\n  asection *paVar2;\n  bfd_section *pbVar3;\n  asection *paVar4;\n  bfd_section *pbVar5;\n  byte bVar6;\n  bfd *pbVar7;\n  lang_statement_union *plVar8;\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  pbVar7 = link_info.output_bfd;\n  if (lang_output_section_statement.head != (lang_statement_union *)0x0) {\n    bVar6 = link_info._3_1_ & 8;\n    plVar8 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }\nLAB_00119f88:\n      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;\n    } while (plVar8 != (lang_statement_union *)0x0);\n  }\n  return;\n}\n\n" comment (function_definition "void strip_excluded_output_sections(void)\n\n{\n  uint uVar1;\n  asection *paVar2;\n  bfd_section *pbVar3;\n  asection *paVar4;\n  bfd_section *pbVar5;\n  byte bVar6;\n  bfd *pbVar7;\n  lang_statement_union *plVar8;\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  pbVar7 = link_info.output_bfd;\n  if (lang_output_section_statement.head != (lang_statement_union *)0x0) {\n    bVar6 = link_info._3_1_ & 8;\n    plVar8 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }\nLAB_00119f88:\n      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;\n    } while (plVar8 != (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  uint uVar1;\n  asection *paVar2;\n  bfd_section *pbVar3;\n  asection *paVar4;\n  bfd_section *pbVar5;\n  byte bVar6;\n  bfd *pbVar7;\n  lang_statement_union *plVar8;\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  pbVar7 = link_info.output_bfd;\n  if (lang_output_section_statement.head != (lang_statement_union *)0x0) {\n    bVar6 = link_info._3_1_ & 8;\n    plVar8 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }\nLAB_00119f88:\n      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;\n    } while (plVar8 != (lang_statement_union *)0x0);\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "asection *paVar2;" type_identifier (pointer_declarator "*paVar2" * 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 "byte bVar6;" type_identifier identifier ;) (declaration "bfd *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "lang_statement_union *plVar8;" type_identifier (pointer_declarator "*plVar8" * 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 "pbVar7 = link_info.output_bfd;" (assignment_expression "pbVar7 = 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    bVar6 = link_info._3_1_ & 8;\n    plVar8 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }\nLAB_00119f88:\n      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;\n    } while (plVar8 != (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    bVar6 = link_info._3_1_ & 8;\n    plVar8 = lang_output_section_statement.head;\n    do {\n      if ((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }\nLAB_00119f88:\n      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;\n    } while (plVar8 != (lang_statement_union *)0x0);\n  }" { (expression_statement "bVar6 = link_info._3_1_ & 8;" (assignment_expression "bVar6 = 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 "plVar8 = lang_output_section_statement.head;" (assignment_expression "plVar8 = lang_output_section_statement.head" identifier = (field_expression "lang_output_section_statement.head" identifier . field_identifier)) ;) (do_statement "do {\n      if ((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }\nLAB_00119f88:\n      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;\n    } while (plVar8 != (lang_statement_union *)0x0);" do (compound_statement "{\n      if ((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }\nLAB_00119f88:\n      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;\n    }" { (if_statement "if ((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)) {\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }" if (parenthesized_expression "((((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0))" ( (binary_expression "(((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)) && (uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)" (parenthesized_expression "(((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0))" ( (binary_expression "((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)) &&\n          (paVar2->rawsize == 0)" (parenthesized_expression "((-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0))" ( (binary_expression "(-1 < (plVar8->output_section_statement).constraint) &&\n           (paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)" (parenthesized_expression "(-1 < (plVar8->output_section_statement).constraint)" ( (binary_expression "-1 < (plVar8->output_section_statement).constraint" number_literal < (field_expression "(plVar8->output_section_statement).constraint" (parenthesized_expression "(plVar8->output_section_statement)" ( (field_expression "plVar8->output_section_statement" identifier -> field_identifier) )) . field_identifier)) )) && (parenthesized_expression "(paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0)" ( (comma_expression "paVar2 = (plVar8->output_section_statement).bfd_section, paVar2 != (asection *)0x0" (assignment_expression "paVar2 = (plVar8->output_section_statement).bfd_section" identifier = (field_expression "(plVar8->output_section_statement).bfd_section" (parenthesized_expression "(plVar8->output_section_statement)" ( (field_expression "plVar8->output_section_statement" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "paVar2 != (asection *)0x0" identifier != (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(paVar2->rawsize == 0)" ( (binary_expression "paVar2->rawsize == 0" (field_expression "paVar2->rawsize" identifier -> field_identifier) == number_literal) ))) )) && (parenthesized_expression "(uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0)" ( (comma_expression "uVar1 = paVar2->flags, (uVar1 & 0x200000) == 0" (assignment_expression "uVar1 = paVar2->flags" identifier = (field_expression "paVar2->flags" identifier -> field_identifier)) , (binary_expression "(uVar1 & 0x200000) == 0" (parenthesized_expression "(uVar1 & 0x200000)" ( (binary_expression "uVar1 & 0x200000" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n        pbVar3 = paVar2->next;\n        if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->section_last;\n        }\n        else {\n          paVar4 = pbVar3->prev;\n        }\n        if (paVar4 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }\n      }" { (expression_statement "pbVar3 = paVar2->next;" (assignment_expression "pbVar3 = paVar2->next" identifier = (field_expression "paVar2->next" identifier -> field_identifier)) ;) (if_statement "if (pbVar3 == (bfd_section *)0x0) {\n          paVar4 = pbVar7->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 = pbVar7->section_last;\n        }" { (expression_statement "paVar4 = pbVar7->section_last;" (assignment_expression "paVar4 = pbVar7->section_last" identifier = (field_expression "pbVar7->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 == paVar2) {\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }" if (parenthesized_expression "(paVar4 == paVar2)" ( (binary_expression "paVar4 == paVar2" identifier == identifier) )) (compound_statement "{\n          for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }\n          paVar2->flags = uVar1 | 0x8000;\n          pbVar5 = paVar2->prev;\n          if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\n          }\n          if (pbVar3 == (bfd_section *)0x0) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\n          }\n          pbVar7->section_count = pbVar7->section_count - 1;\n        }" { (for_statement "for (pbVar5 = (paVar2->map_head).s; pbVar5 != (bfd_section *)0x0;\n              pbVar5 = (pbVar5->map_head).s) {\n            if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;\n          }" for ( (assignment_expression "pbVar5 = (paVar2->map_head).s" identifier = (field_expression "(paVar2->map_head).s" (parenthesized_expression "(paVar2->map_head)" ( (field_expression "paVar2->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 || (bVar6 != 0)))) goto LAB_00119f88;\n          }" { (if_statement "if (((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0)))) goto LAB_00119f88;" if (parenthesized_expression "(((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0))))" ( (binary_expression "((pbVar5->flags & 0x8000) == 0) &&\n               (((pbVar5->flags & 0x100000) != 0 || (bVar6 != 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 || (bVar6 != 0)))" ( (parenthesized_expression "((pbVar5->flags & 0x100000) != 0 || (bVar6 != 0))" ( (binary_expression "(pbVar5->flags & 0x100000) != 0 || (bVar6 != 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 "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_00119f88;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0) {\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }" if (parenthesized_expression "((*(byte *)((long)plVar8 + 0x90) & 0x10) == 0)" ( (binary_expression "(*(byte *)((long)plVar8 + 0x90) & 0x10) == 0" (parenthesized_expression "(*(byte *)((long)plVar8 + 0x90) & 0x10)" ( (binary_expression "*(byte *)((long)plVar8 + 0x90) & 0x10" (pointer_expression "*(byte *)((long)plVar8 + 0x90)" * (cast_expression "(byte *)((long)plVar8 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar8 + 0x90)" ( (binary_expression "(long)plVar8 + 0x90" (cast_expression "(long)plVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;\n          }" { (expression_statement "*(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8;" (assignment_expression "*(byte *)((long)plVar8 + 0x90) = *(byte *)((long)plVar8 + 0x90) | 8" (pointer_expression "*(byte *)((long)plVar8 + 0x90)" * (cast_expression "(byte *)((long)plVar8 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar8 + 0x90)" ( (binary_expression "(long)plVar8 + 0x90" (cast_expression "(long)plVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)plVar8 + 0x90) | 8" (pointer_expression "*(byte *)((long)plVar8 + 0x90)" * (cast_expression "(byte *)((long)plVar8 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar8 + 0x90)" ( (binary_expression "(long)plVar8 + 0x90" (cast_expression "(long)plVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) })) (expression_statement "paVar2->flags = uVar1 | 0x8000;" (assignment_expression "paVar2->flags = uVar1 | 0x8000" (field_expression "paVar2->flags" identifier -> field_identifier) = (binary_expression "uVar1 | 0x8000" identifier | number_literal)) ;) (expression_statement "pbVar5 = paVar2->prev;" (assignment_expression "pbVar5 = paVar2->prev" identifier = (field_expression "paVar2->prev" identifier -> field_identifier)) ;) (if_statement "if (pbVar5 == (bfd_section *)0x0) {\n            pbVar7->sections = pbVar3;\n          }\n          else {\n            pbVar5->next = pbVar3;\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            pbVar7->sections = pbVar3;\n          }" { (expression_statement "pbVar7->sections = pbVar3;" (assignment_expression "pbVar7->sections = pbVar3" (field_expression "pbVar7->sections" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            pbVar5->next = pbVar3;\n          }" else (compound_statement "{\n            pbVar5->next = pbVar3;\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) {\n            pbVar7->section_last = pbVar5;\n          }\n          else {\n            pbVar3->prev = pbVar5;\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            pbVar7->section_last = pbVar5;\n          }" { (expression_statement "pbVar7->section_last = pbVar5;" (assignment_expression "pbVar7->section_last = pbVar5" (field_expression "pbVar7->section_last" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            pbVar3->prev = pbVar5;\n          }" else (compound_statement "{\n            pbVar3->prev = pbVar5;\n          }" { (expression_statement "pbVar3->prev = pbVar5;" (assignment_expression "pbVar3->prev = pbVar5" (field_expression "pbVar3->prev" identifier -> field_identifier) = identifier) ;) }))) (expression_statement "pbVar7->section_count = pbVar7->section_count - 1;" (assignment_expression "pbVar7->section_count = pbVar7->section_count - 1" (field_expression "pbVar7->section_count" identifier -> field_identifier) = (binary_expression "pbVar7->section_count - 1" (field_expression "pbVar7->section_count" identifier -> field_identifier) - number_literal)) ;) })) })) (labeled_statement "LAB_00119f88:\n      plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;" statement_identifier : (expression_statement "plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list;" (assignment_expression "plVar8 = (lang_statement_union *)(plVar8->wild_statement).section_list" identifier = (cast_expression "(lang_statement_union *)(plVar8->wild_statement).section_list" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(plVar8->wild_statement).section_list" (parenthesized_expression "(plVar8->wild_statement)" ( (field_expression "plVar8->wild_statement" identifier -> field_identifier) )) . field_identifier))) ;)) }) while (parenthesized_expression "(plVar8 != (lang_statement_union *)0x0)" ( (binary_expression "plVar8 != (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_00119f00(void)\n\n{\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  byte bVar5;\n  long lVar6;\n  long lVar7;\n  \n  if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }\n  lVar6 = DAT_00182db0;\n  if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00119f00(void)\n\n{\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  byte bVar5;\n  long lVar6;\n  long lVar7;\n  \n  if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }\n  lVar6 = DAT_00182db0;\n  if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00119f00(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  byte bVar5;\n  long lVar6;\n  long lVar7;\n  \n  if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }\n  lVar6 = DAT_00182db0;\n  if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }" if (parenthesized_expression "(DAT_00182fa0 != 1)" ( (binary_expression "DAT_00182fa0 != 1" identifier != number_literal) )) (compound_statement "{\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }" { (expression_statement "DAT_00182fa0 = 1;" (assignment_expression "DAT_00182fa0 = 1" identifier = number_literal) ;) (expression_statement "DAT_00182ff8 = 0;" (assignment_expression "DAT_00182ff8 = 0" identifier = number_literal) ;) (expression_statement "FUN_00118870(0,0);" (call_expression "FUN_00118870(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_00119e80();" (call_expression "FUN_00119e80()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "lVar6 = DAT_00182db0;" (assignment_expression "lVar6 = DAT_00182db0" identifier = identifier) ;) (if_statement "if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }" if (parenthesized_expression "(DAT_00182d00 != 0)" ( (binary_expression "DAT_00182d00 != 0" identifier != number_literal) )) (compound_statement "{\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }" { (expression_statement "bVar5 = DAT_00182d63 & 8;" (assignment_expression "bVar5 = DAT_00182d63 & 8" identifier = (binary_expression "DAT_00182d63 & 8" identifier & number_literal)) ;) (expression_statement "lVar7 = DAT_00182d00;" (assignment_expression "lVar7 = DAT_00182d00" identifier = identifier) ;) (do_statement "do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);" do (compound_statement "{\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    }" { (if_statement "if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }" if (parenthesized_expression "((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0))" ( (binary_expression "(((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)" (parenthesized_expression "(((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0))" ( (binary_expression "((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)" (parenthesized_expression "((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0))" ( (binary_expression "(-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)" (parenthesized_expression "(-1 < *(int *)(lVar7 + 0x84))" ( (binary_expression "-1 < *(int *)(lVar7 + 0x84)" number_literal < (pointer_expression "*(int *)(lVar7 + 0x84)" * (cast_expression "(int *)(lVar7 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x84)" ( (binary_expression "lVar7 + 0x84" identifier + number_literal) ))))) )) && (parenthesized_expression "(lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)" ( (comma_expression "lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0" (assignment_expression "lVar2 = *(long *)(lVar7 + 0x38)" identifier = (pointer_expression "*(long *)(lVar7 + 0x38)" * (cast_expression "(long *)(lVar7 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x38)" ( (binary_expression "lVar7 + 0x38" identifier + number_literal) ))))) , (binary_expression "lVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(long *)(lVar2 + 0x40) == 0)" ( (binary_expression "*(long *)(lVar2 + 0x40) == 0" (pointer_expression "*(long *)(lVar2 + 0x40)" * (cast_expression "(long *)(lVar2 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x40)" ( (binary_expression "lVar2 + 0x40" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)" ( (comma_expression "uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0" (assignment_expression "uVar1 = *(uint *)(lVar2 + 0x20)" identifier = (pointer_expression "*(uint *)(lVar2 + 0x20)" * (cast_expression "(uint *)(lVar2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) , (binary_expression "(uVar1 & 0x200000) == 0" (parenthesized_expression "(uVar1 & 0x200000)" ( (binary_expression "uVar1 & 0x200000" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }" { (expression_statement "lVar3 = *(long *)(lVar2 + 0x10);" (assignment_expression "lVar3 = *(long *)(lVar2 + 0x10)" identifier = (pointer_expression "*(long *)(lVar2 + 0x10)" * (cast_expression "(long *)(lVar2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }" { (expression_statement "lVar4 = *(long *)(lVar6 + 0x98);" (assignment_expression "lVar4 = *(long *)(lVar6 + 0x98)" identifier = (pointer_expression "*(long *)(lVar6 + 0x98)" * (cast_expression "(long *)(lVar6 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x98)" ( (binary_expression "lVar6 + 0x98" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" else (compound_statement "{\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" { (expression_statement "lVar4 = *(long *)(lVar3 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar3 + 0x18)" identifier = (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) ))))) ;) }))) (if_statement "if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }" if (parenthesized_expression "(lVar4 == lVar2)" ( (binary_expression "lVar4 == lVar2" identifier == identifier) )) (compound_statement "{\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }" { (for_statement "for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }" for ( (assignment_expression "lVar4 = *(long *)(lVar2 + 0x108)" identifier = (pointer_expression "*(long *)(lVar2 + 0x108)" * (cast_expression "(long *)(lVar2 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x108)" ( (binary_expression "lVar2 + 0x108" identifier + number_literal) ))))) ; (binary_expression "lVar4 != 0" identifier != number_literal) ; (assignment_expression "lVar4 = *(long *)(lVar4 + 0x108)" identifier = (pointer_expression "*(long *)(lVar4 + 0x108)" * (cast_expression "(long *)(lVar4 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x108)" ( (binary_expression "lVar4 + 0x108" identifier + number_literal) ))))) ) (compound_statement "{\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }" { (if_statement "if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;" if (parenthesized_expression "(((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0))))" ( (binary_expression "((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))" (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x8000)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x8000" (pointer_expression "*(uint *)(lVar4 + 0x20)" * (cast_expression "(uint *)(lVar4 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))" ( (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0))" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)" (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x100000) != 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x100000)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x100000" (pointer_expression "*(uint *)(lVar4 + 0x20)" * (cast_expression "(uint *)(lVar4 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) || (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) ))) )) ))) )) (goto_statement "goto LAB_00119f88;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }" if (parenthesized_expression "((*(byte *)(lVar7 + 0x90) & 0x10) == 0)" ( (binary_expression "(*(byte *)(lVar7 + 0x90) & 0x10) == 0" (parenthesized_expression "(*(byte *)(lVar7 + 0x90) & 0x10)" ( (binary_expression "*(byte *)(lVar7 + 0x90) & 0x10" (pointer_expression "*(byte *)(lVar7 + 0x90)" * (cast_expression "(byte *)(lVar7 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x90)" ( (binary_expression "lVar7 + 0x90" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }" { (expression_statement "*(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;" (assignment_expression "*(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8" (pointer_expression "*(byte *)(lVar7 + 0x90)" * (cast_expression "(byte *)(lVar7 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x90)" ( (binary_expression "lVar7 + 0x90" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar7 + 0x90) | 8" (pointer_expression "*(byte *)(lVar7 + 0x90)" * (cast_expression "(byte *)(lVar7 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x90)" ( (binary_expression "lVar7 + 0x90" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "*(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;" (assignment_expression "*(uint *)(lVar2 + 0x20) = uVar1 | 0x8000" (pointer_expression "*(uint *)(lVar2 + 0x20)" * (cast_expression "(uint *)(lVar2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) = (binary_expression "uVar1 | 0x8000" identifier | number_literal)) ;) (expression_statement "lVar2 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar2 = *(long *)(lVar2 + 0x18)" identifier = (pointer_expression "*(long *)(lVar2 + 0x18)" * (cast_expression "(long *)(lVar2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }" { (expression_statement "*(long *)(lVar6 + 0x90) = lVar3;" (assignment_expression "*(long *)(lVar6 + 0x90) = lVar3" (pointer_expression "*(long *)(lVar6 + 0x90)" * (cast_expression "(long *)(lVar6 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x90)" ( (binary_expression "lVar6 + 0x90" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" else (compound_statement "{\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" { (expression_statement "*(long *)(lVar2 + 0x10) = lVar3;" (assignment_expression "*(long *)(lVar2 + 0x10) = lVar3" (pointer_expression "*(long *)(lVar2 + 0x10)" * (cast_expression "(long *)(lVar2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }" { (expression_statement "*(long *)(lVar6 + 0x98) = lVar2;" (assignment_expression "*(long *)(lVar6 + 0x98) = lVar2" (pointer_expression "*(long *)(lVar6 + 0x98)" * (cast_expression "(long *)(lVar6 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x98)" ( (binary_expression "lVar6 + 0x98" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" else (compound_statement "{\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" { (expression_statement "*(long *)(lVar3 + 0x18) = lVar2;" (assignment_expression "*(long *)(lVar3 + 0x18) = lVar2" (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;" (assignment_expression "*(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1" (pointer_expression "*(int *)(lVar6 + 0xa0)" * (cast_expression "(int *)(lVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xa0)" ( (binary_expression "lVar6 + 0xa0" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar6 + 0xa0) + -1" (pointer_expression "*(int *)(lVar6 + 0xa0)" * (cast_expression "(int *)(lVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xa0)" ( (binary_expression "lVar6 + 0xa0" identifier + number_literal) )))) + number_literal)) ;) })) })) (labeled_statement "LAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);" statement_identifier : (expression_statement "lVar7 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar7 = *(long *)(lVar7 + 0x20)" identifier = (pointer_expression "*(long *)(lVar7 + 0x20)" * (cast_expression "(long *)(lVar7 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x20)" ( (binary_expression "lVar7 + 0x20" identifier + number_literal) ))))) ;)) }) while (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 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 (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00119f00(void)\n\n{\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  byte bVar5;\n  long lVar6;\n  long lVar7;\n  \n  if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }\n  lVar6 = DAT_00182db0;\n  if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00119f00(void)" (identifier "FUN_00119f00") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  byte bVar5;\n  long lVar6;\n  long lVar7;\n  \n  if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }\n  lVar6 = DAT_00182db0;\n  if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (if_statement "if (DAT_00182fa0 != 1) {\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }" (if "if") (parenthesized_expression "(DAT_00182fa0 != 1)" (( "(") (binary_expression "DAT_00182fa0 != 1" (identifier "DAT_00182fa0") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    DAT_00182fa0 = 1;\n    DAT_00182ff8 = 0;\n    FUN_00118870(0,0);\n    FUN_00119e80();\n  }" ({ "{") (expression_statement "DAT_00182fa0 = 1;" (assignment_expression "DAT_00182fa0 = 1" (identifier "DAT_00182fa0") (= "=") (number_literal "1")) (; ";")) (expression_statement "DAT_00182ff8 = 0;" (assignment_expression "DAT_00182ff8 = 0" (identifier "DAT_00182ff8") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00118870(0,0);" (call_expression "FUN_00118870(0,0)" (identifier "FUN_00118870") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00119e80();" (call_expression "FUN_00119e80()" (identifier "FUN_00119e80") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar6 = DAT_00182db0;" (assignment_expression "lVar6 = DAT_00182db0" (identifier "lVar6") (= "=") (identifier "DAT_00182db0")) (; ";")) (if_statement "if (DAT_00182d00 != 0) {\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }" (if "if") (parenthesized_expression "(DAT_00182d00 != 0)" (( "(") (binary_expression "DAT_00182d00 != 0" (identifier "DAT_00182d00") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    bVar5 = DAT_00182d63 & 8;\n    lVar7 = DAT_00182d00;\n    do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);\n  }" ({ "{") (expression_statement "bVar5 = DAT_00182d63 & 8;" (assignment_expression "bVar5 = DAT_00182d63 & 8" (identifier "bVar5") (= "=") (binary_expression "DAT_00182d63 & 8" (identifier "DAT_00182d63") (& "&") (number_literal "8"))) (; ";")) (expression_statement "lVar7 = DAT_00182d00;" (assignment_expression "lVar7 = DAT_00182d00" (identifier "lVar7") (= "=") (identifier "DAT_00182d00")) (; ";")) (do_statement "do {\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    } while (lVar7 != 0);" (do "do") (compound_statement "{\n      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }\nLAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);\n    }" ({ "{") (if_statement "if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }" (if "if") (parenthesized_expression "((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0))" (( "(") (binary_expression "(((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)) &&\n         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)" (parenthesized_expression "(((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0))" (( "(") (binary_expression "((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&\n          (*(long *)(lVar2 + 0x40) == 0)" (parenthesized_expression "((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0))" (( "(") (binary_expression "(-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)" (parenthesized_expression "(-1 < *(int *)(lVar7 + 0x84))" (( "(") (binary_expression "-1 < *(int *)(lVar7 + 0x84)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(lVar7 + 0x84)" (* "*") (cast_expression "(int *)(lVar7 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x84)" (( "(") (binary_expression "lVar7 + 0x84" (identifier "lVar7") (+ "+") (number_literal "0x84")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)" (( "(") (comma_expression "lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0" (assignment_expression "lVar2 = *(long *)(lVar7 + 0x38)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(lVar7 + 0x38)" (* "*") (cast_expression "(long *)(lVar7 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x38)" (( "(") (binary_expression "lVar7 + 0x38" (identifier "lVar7") (+ "+") (number_literal "0x38")) () ")"))))) (, ",") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(lVar2 + 0x40) == 0)" (( "(") (binary_expression "*(long *)(lVar2 + 0x40) == 0" (pointer_expression "*(long *)(lVar2 + 0x40)" (* "*") (cast_expression "(long *)(lVar2 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x40)" (( "(") (binary_expression "lVar2 + 0x40" (identifier "lVar2") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)" (( "(") (comma_expression "uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0" (assignment_expression "uVar1 = *(uint *)(lVar2 + 0x20)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(lVar2 + 0x20)" (* "*") (cast_expression "(uint *)(lVar2 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")"))))) (, ",") (binary_expression "(uVar1 & 0x200000) == 0" (parenthesized_expression "(uVar1 & 0x200000)" (( "(") (binary_expression "uVar1 & 0x200000" (identifier "uVar1") (& "&") (number_literal "0x200000")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        lVar3 = *(long *)(lVar2 + 0x10);\n        if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }\n        if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }\n      }" ({ "{") (expression_statement "lVar3 = *(long *)(lVar2 + 0x10);" (assignment_expression "lVar3 = *(long *)(lVar2 + 0x10)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(lVar2 + 0x10)" (* "*") (cast_expression "(long *)(lVar2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (lVar3 == 0) {\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }\n        else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          lVar4 = *(long *)(lVar6 + 0x98);\n        }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar6 + 0x98);" (assignment_expression "lVar4 = *(long *)(lVar6 + 0x98)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar6 + 0x98)" (* "*") (cast_expression "(long *)(lVar6 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x98)" (( "(") (binary_expression "lVar6 + 0x98" (identifier "lVar6") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" (else "else") (compound_statement "{\n          lVar4 = *(long *)(lVar3 + 0x18);\n        }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar3 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar3 + 0x18)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar3 + 0x18)" (* "*") (cast_expression "(long *)(lVar3 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (lVar4 == lVar2) {\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }" (if "if") (parenthesized_expression "(lVar4 == lVar2)" (( "(") (binary_expression "lVar4 == lVar2" (identifier "lVar4") (== "==") (identifier "lVar2")) () ")")) (compound_statement "{\n          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }\n          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }\n          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;\n          lVar2 = *(long *)(lVar2 + 0x18);\n          if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }\n          if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }\n          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;\n        }" ({ "{") (for_statement "for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }" (for "for") (( "(") (assignment_expression "lVar4 = *(long *)(lVar2 + 0x108)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar2 + 0x108)" (* "*") (cast_expression "(long *)(lVar2 + 0x108)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x108)" (( "(") (binary_expression "lVar2 + 0x108" (identifier "lVar2") (+ "+") (number_literal "0x108")) () ")"))))) (; ";") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "lVar4 = *(long *)(lVar4 + 0x108)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar4 + 0x108)" (* "*") (cast_expression "(long *)(lVar4 + 0x108)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x108)" (( "(") (binary_expression "lVar4 + 0x108" (identifier "lVar4") (+ "+") (number_literal "0x108")) () ")"))))) () ")") (compound_statement "{\n            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;\n          }" ({ "{") (if_statement "if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;" (if "if") (parenthesized_expression "(((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0))))" (( "(") (binary_expression "((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&\n               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))" (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x8000) == 0)" (( "(") (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x8000)" (( "(") (binary_expression "*(uint *)(lVar4 + 0x20) & 0x8000" (pointer_expression "*(uint *)(lVar4 + 0x20)" (* "*") (cast_expression "(uint *)(lVar4 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "0x8000")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))" (( "(") (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0))" (( "(") (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)" (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x100000) != 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x100000)" (( "(") (binary_expression "*(uint *)(lVar4 + 0x20) & 0x100000" (pointer_expression "*(uint *)(lVar4 + 0x20)" (* "*") (cast_expression "(uint *)(lVar4 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "0x100000")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(bVar5 != 0)" (( "(") (binary_expression "bVar5 != 0" (identifier "bVar5") (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00119f88;" (goto "goto") (statement_identifier "LAB_00119f88") (; ";"))) (} "}"))) (if_statement "if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }" (if "if") (parenthesized_expression "((*(byte *)(lVar7 + 0x90) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(lVar7 + 0x90) & 0x10) == 0" (parenthesized_expression "(*(byte *)(lVar7 + 0x90) & 0x10)" (( "(") (binary_expression "*(byte *)(lVar7 + 0x90) & 0x10" (pointer_expression "*(byte *)(lVar7 + 0x90)" (* "*") (cast_expression "(byte *)(lVar7 + 0x90)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x90)" (( "(") (binary_expression "lVar7 + 0x90" (identifier "lVar7") (+ "+") (number_literal "0x90")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;\n          }" ({ "{") (expression_statement "*(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;" (assignment_expression "*(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8" (pointer_expression "*(byte *)(lVar7 + 0x90)" (* "*") (cast_expression "(byte *)(lVar7 + 0x90)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x90)" (( "(") (binary_expression "lVar7 + 0x90" (identifier "lVar7") (+ "+") (number_literal "0x90")) () ")")))) (= "=") (binary_expression "*(byte *)(lVar7 + 0x90) | 8" (pointer_expression "*(byte *)(lVar7 + 0x90)" (* "*") (cast_expression "(byte *)(lVar7 + 0x90)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x90)" (( "(") (binary_expression "lVar7 + 0x90" (identifier "lVar7") (+ "+") (number_literal "0x90")) () ")")))) (| "|") (number_literal "8"))) (; ";")) (} "}"))) (expression_statement "*(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;" (assignment_expression "*(uint *)(lVar2 + 0x20) = uVar1 | 0x8000" (pointer_expression "*(uint *)(lVar2 + 0x20)" (* "*") (cast_expression "(uint *)(lVar2 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "uVar1 | 0x8000" (identifier "uVar1") (| "|") (number_literal "0x8000"))) (; ";")) (expression_statement "lVar2 = *(long *)(lVar2 + 0x18);" (assignment_expression "lVar2 = *(long *)(lVar2 + 0x18)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(lVar2 + 0x18)" (* "*") (cast_expression "(long *)(lVar2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (lVar2 == 0) {\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }\n          else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" (if "if") (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(long *)(lVar6 + 0x90) = lVar3;\n          }" ({ "{") (expression_statement "*(long *)(lVar6 + 0x90) = lVar3;" (assignment_expression "*(long *)(lVar6 + 0x90) = lVar3" (pointer_expression "*(long *)(lVar6 + 0x90)" (* "*") (cast_expression "(long *)(lVar6 + 0x90)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x90)" (( "(") (binary_expression "lVar6 + 0x90" (identifier "lVar6") (+ "+") (number_literal "0x90")) () ")")))) (= "=") (identifier "lVar3")) (; ";")) (} "}")) (else_clause "else {\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" (else "else") (compound_statement "{\n            *(long *)(lVar2 + 0x10) = lVar3;\n          }" ({ "{") (expression_statement "*(long *)(lVar2 + 0x10) = lVar3;" (assignment_expression "*(long *)(lVar2 + 0x10) = lVar3" (pointer_expression "*(long *)(lVar2 + 0x10)" (* "*") (cast_expression "(long *)(lVar2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "lVar3")) (; ";")) (} "}")))) (if_statement "if (lVar3 == 0) {\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }\n          else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(long *)(lVar6 + 0x98) = lVar2;\n          }" ({ "{") (expression_statement "*(long *)(lVar6 + 0x98) = lVar2;" (assignment_expression "*(long *)(lVar6 + 0x98) = lVar2" (pointer_expression "*(long *)(lVar6 + 0x98)" (* "*") (cast_expression "(long *)(lVar6 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x98)" (( "(") (binary_expression "lVar6 + 0x98" (identifier "lVar6") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (identifier "lVar2")) (; ";")) (} "}")) (else_clause "else {\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" (else "else") (compound_statement "{\n            *(long *)(lVar3 + 0x18) = lVar2;\n          }" ({ "{") (expression_statement "*(long *)(lVar3 + 0x18) = lVar2;" (assignment_expression "*(long *)(lVar3 + 0x18) = lVar2" (pointer_expression "*(long *)(lVar3 + 0x18)" (* "*") (cast_expression "(long *)(lVar3 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "lVar2")) (; ";")) (} "}")))) (expression_statement "*(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;" (assignment_expression "*(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1" (pointer_expression "*(int *)(lVar6 + 0xa0)" (* "*") (cast_expression "(int *)(lVar6 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0xa0)" (( "(") (binary_expression "lVar6 + 0xa0" (identifier "lVar6") (+ "+") (number_literal "0xa0")) () ")")))) (= "=") (binary_expression "*(int *)(lVar6 + 0xa0) + -1" (pointer_expression "*(int *)(lVar6 + 0xa0)" (* "*") (cast_expression "(int *)(lVar6 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0xa0)" (( "(") (binary_expression "lVar6 + 0xa0" (identifier "lVar6") (+ "+") (number_literal "0xa0")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00119f88:\n      lVar7 = *(long *)(lVar7 + 0x20);" (statement_identifier "LAB_00119f88") (: ":") (expression_statement "lVar7 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar7 = *(long *)(lVar7 + 0x20)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(lVar7 + 0x20)" (* "*") (cast_expression "(long *)(lVar7 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x20)" (( "(") (binary_expression "lVar7 + 0x20" (identifier "lVar7") (+ "+") (number_literal "0x20")) () ")"))))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(lVar7 != 0)" (( "(") (binary_expression "lVar7 != 0" (identifier "lVar7") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  type_1 var_5;
  type_2 *var_4;
  type_3 *var_6;
  type_2 *var_7;
  type_3 *var_8;
  type_4 var_9;
  type_5 *pbVar7;
  type_6 *var_10;
  
  if (expld.phase != var_1) {
    expld.phase = var_1;
    expld.dataseg.phase = exp_seg_none;
    var_2((type_7 *)0x0,0);
    var_3();
  }
  pbVar7 = link_info.output_bfd;
  if (lang_output_section_statement.head != (type_6 *)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_2 *)0x0)) &&
          (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 = pbVar7->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_00119f88;
          }
          if ((*(type_4 *)((long)var_10 + 0x90) & 0x10) == 0) {
            *(type_4 *)((long)var_10 + 0x90) = *(type_4 *)((long)var_10 + 0x90) | 8;
          }
          var_4->flags = var_5 | 0x8000;
          var_8 = var_4->prev;
          if (var_8 == (type_3 *)0x0) {
            pbVar7->sections = var_6;
          }
          else {
            var_8->next = var_6;
          }
          if (var_6 == (type_3 *)0x0) {
            pbVar7->section_last = var_8;
          }
          else {
            var_6->prev = var_8;
          }
          pbVar7->section_count = pbVar7->section_count - 1;
        }
      }
LAB_00119f88:
      var_10 = (type_6 *)(var_10->wild_statement).section_list;
    } while (var_10 != (type_6 *)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: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (sized_type_specifier) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (sized_type_specifier) 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: (sized_type_specifier) 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: (sized_type_specifier) 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: (sized_type_specifier) 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: (sized_type_specifier) 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: (sized_type_specifier) 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: (sized_type_specifier) 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: (sized_type_specifier) 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: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (sized_type_specifier) 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: (sized_type_specifier) 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))))

void MASKED(void)

{
  uint uVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  byte bVar5;
  long lVar6;
  long lVar7;
  
  if (DAT_00182fa0 != 1) {
    DAT_00182fa0 = 1;
    DAT_00182ff8 = 0;
    FUN_00118870(0,0);
    FUN_00119e80();
  }
  lVar6 = DAT_00182db0;
  if (DAT_00182d00 != 0) {
    bVar5 = DAT_00182d63 & 8;
    lVar7 = DAT_00182d00;
    do {
      if ((((-1 < *(int *)(lVar7 + 0x84)) && (lVar2 = *(long *)(lVar7 + 0x38), lVar2 != 0)) &&
          (*(long *)(lVar2 + 0x40) == 0)) &&
         (uVar1 = *(uint *)(lVar2 + 0x20), (uVar1 & 0x200000) == 0)) {
        lVar3 = *(long *)(lVar2 + 0x10);
        if (lVar3 == 0) {
          lVar4 = *(long *)(lVar6 + 0x98);
        }
        else {
          lVar4 = *(long *)(lVar3 + 0x18);
        }
        if (lVar4 == lVar2) {
          for (lVar4 = *(long *)(lVar2 + 0x108); lVar4 != 0; lVar4 = *(long *)(lVar4 + 0x108)) {
            if (((*(uint *)(lVar4 + 0x20) & 0x8000) == 0) &&
               (((*(uint *)(lVar4 + 0x20) & 0x100000) != 0 || (bVar5 != 0)))) goto LAB_00119f88;
          }
          if ((*(byte *)(lVar7 + 0x90) & 0x10) == 0) {
            *(byte *)(lVar7 + 0x90) = *(byte *)(lVar7 + 0x90) | 8;
          }
          *(uint *)(lVar2 + 0x20) = uVar1 | 0x8000;
          lVar2 = *(long *)(lVar2 + 0x18);
          if (lVar2 == 0) {
            *(long *)(lVar6 + 0x90) = lVar3;
          }
          else {
            *(long *)(lVar2 + 0x10) = lVar3;
          }
          if (lVar3 == 0) {
            *(long *)(lVar6 + 0x98) = lVar2;
          }
          else {
            *(long *)(lVar3 + 0x18) = lVar2;
          }
          *(int *)(lVar6 + 0xa0) = *(int *)(lVar6 + 0xa0) + -1;
        }
      }
LAB_00119f88:
      lVar7 = *(long *)(lVar7 + 0x20);
    } while (lVar7 != 0);
  }
  return;
}

