
/* WARNING: Unknown calling convention */

asection * section_for_dot(void)

{
  byte bVar1;
  bfd_section *pbVar2;
  lang_statement_union *plVar3;
  bfd_section *pbVar4;
  flagword fVar5;
  
  if ((current_section == (lang_output_section_statement_type *)0x0) || (prefer_next_section != 0))
  {
    plVar3 = (lang_statement_union *)current_assign;
    if (current_assign != (lang_assignment_statement_type *)0x0) {
      do {
        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {
          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;
          goto joined_r0x0011cb54;
        }
        plVar3 = (plVar3->wild_statement).header.next;
      } while (plVar3 != (lang_statement_union *)0x0);
    }
LAB_0011cc37:
    pbVar4 = (link_info.output_bfd)->section_last;
    goto LAB_0011cbb0;
  }
LAB_0011caa1:
  pbVar4 = current_section->bfd_section;
joined_r0x0011caa8:
  if (pbVar4 != (asection *)0x0) {
    do {
      fVar5 = pbVar4->flags;
      if ((fVar5 & 0x8401) == 1) {
        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;
        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;
      }
      pbVar4 = pbVar4->prev;
      if (pbVar4 == (bfd_section *)0x0) break;
    } while( true );
  }
  pbVar4 = (link_info.output_bfd)->sections;
  if (pbVar4 == (bfd_section *)0x0) goto LAB_0011cb0b;
  fVar5 = pbVar4->flags;
LAB_0011cae0:
  if ((fVar5 & 0x401) == 1) {
    return pbVar4;
  }
  while( true ) {
    pbVar4 = pbVar4->next;
    if (pbVar4 == (bfd_section *)0x0) break;
    if ((pbVar4->flags & 0x401) == 1) {
      return pbVar4;
    }
  }
LAB_0011cb0b:
  return (asection *)(_bfd_std_section + 0x230);
joined_r0x0011cb54:
  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;
  pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;
  if ((pbVar4 != (bfd_section *)0x0) && ((pbVar4->flags & 0x8000) == 0)) {
    if (pbVar4->next == (bfd_section *)0x0) {
      pbVar2 = (link_info.output_bfd)->section_last;
    }
    else {
      pbVar2 = pbVar4->next->prev;
    }
    if (pbVar4 == pbVar2) {
      if (current_section == (lang_output_section_statement_type *)0x0) {
        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;
      }
      else {
        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;
        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;
      }
      goto LAB_0011cbb0;
    }
  }
  plVar3 = *(lang_statement_union **)&(&plVar3->assignment_statement)[1].header.type;
  if (plVar3 == (lang_statement_union *)0x0) goto LAB_0011cc37;
  bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;
  goto joined_r0x0011cb54;
LAB_0011cc48:
  if (current_section == (lang_output_section_statement_type *)0x0) {
    pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;
LAB_0011cbb0:
    if (pbVar4 != (asection *)0x0) {
      if ((pbVar4->flags & 0x401) == 1) {
        return pbVar4;
      }
      while( true ) {
        pbVar4 = pbVar4->prev;
        if (pbVar4 == (bfd_section *)0x0) break;
        if ((pbVar4->flags & 0x401) == 1) {
          return pbVar4;
        }
      }
    }
    goto LAB_0011cb0b;
  }
  goto LAB_0011caa1;
LAB_0011cbf0:
  if ((link_info.output_bfd)->section_last == pbVar4) goto LAB_0011cae0;
  pbVar4 = pbVar4->prev;
  goto joined_r0x0011caa8;
}



long FUN_0011ca80(void)

{
  byte bVar1;
  long lVar2;
  long *plVar3;
  long lVar4;
  uint uVar5;
  
  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {
    plVar3 = DAT_002b4cc8;
    if (DAT_002b4cc8 != (long *)0x0) {
      do {
        if ((int)plVar3[1] == 0) {
          bVar1 = *(byte *)(plVar3 + 0x12);
          goto joined_r0x0011cb54;
        }
        plVar3 = (long *)*plVar3;
      } while (plVar3 != (long *)0x0);
    }
LAB_0011cc37:
    lVar4 = *(long *)(DAT_002b5f90 + 0x98);
    goto LAB_0011cbb0;
  }
LAB_0011caa1:
  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);
joined_r0x0011caa8:
  if (lVar4 != 0) {
    do {
      uVar5 = *(uint *)(lVar4 + 0x20);
      if ((uVar5 & 0x8401) == 1) {
        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;
        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;
      }
      lVar4 = *(long *)(lVar4 + 0x18);
      if (lVar4 == 0) break;
    } while( true );
  }
  lVar4 = *(long *)(DAT_002b5f90 + 0x90);
  if (lVar4 == 0) {
    return 0x2b46b0;
  }
  uVar5 = *(uint *)(lVar4 + 0x20);
LAB_0011cae0:
  if ((uVar5 & 0x401) == 1) {
    return lVar4;
  }
  do {
    lVar4 = *(long *)(lVar4 + 0x10);
    if (lVar4 == 0) {
      return 0x2b46b0;
    }
  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);
  return lVar4;
joined_r0x0011cb54:
  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;
  lVar4 = plVar3[7];
  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {
    if (*(long *)(lVar4 + 0x10) == 0) {
      lVar2 = *(long *)(DAT_002b5f90 + 0x98);
    }
    else {
      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);
    }
    if (lVar4 == lVar2) {
      if (DAT_002b4cd0 == 0) {
        lVar4 = plVar3[7];
      }
      else {
        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;
        lVar4 = plVar3[7];
      }
      goto LAB_0011cbb0;
    }
  }
  plVar3 = (long *)plVar3[4];
  if (plVar3 == (long *)0x0) goto LAB_0011cc37;
  bVar1 = *(byte *)(plVar3 + 0x12);
  goto joined_r0x0011cb54;
LAB_0011cc48:
  if (DAT_002b4cd0 == 0) {
    lVar4 = plVar3[7];
LAB_0011cbb0:
    if (lVar4 == 0) {
      return 0x2b46b0;
    }
    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {
      do {
        lVar4 = *(long *)(lVar4 + 0x18);
        if (lVar4 == 0) {
          return 0x2b46b0;
        }
      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);
      return lVar4;
    }
    return lVar4;
  }
  goto LAB_0011caa1;
LAB_0011cbf0:
  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;
  lVar4 = *(long *)(lVar4 + 0x18);
  goto joined_r0x0011caa8;
}


MOV RDI,qword ptr [0x002b4cd0]
TEST RDI,RDI
JZ 0x0011cb18
MOV ECX,dword ptr [0x002b4cc0]
TEST ECX,ECX
JNZ 0x0011cb18
MOV RSI,qword ptr [0x002b5f90]
MOV RAX,qword ptr [RDI + 0x38]
TEST RAX,RAX
JNZ 0x0011cabd
JMP 0x0011cc10
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JZ 0x0011cc10
MOV EDX,dword ptr [RAX + 0x20]
MOV ECX,EDX
AND ECX,0x8401
CMP ECX,0x1
JNZ 0x0011cab0
MOV RCX,qword ptr [RAX + 0x10]
TEST RCX,RCX
JZ 0x0011cbf0
CMP qword ptr [RCX + 0x18],RAX
JNZ 0x0011cab0
AND EDX,0x401
CMP EDX,0x1
JNZ 0x0011cb02
JMP 0x0011cc7f
MOV EDX,dword ptr [RAX + 0x20]
AND EDX,0x401
CMP EDX,0x1
JZ 0x0011cc60
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JNZ 0x0011caf0
LEA RAX,[0x2b46b0]
RET
MOV RAX,qword ptr [0x002b4cc8]
TEST RAX,RAX
JNZ 0x0011cb3c
JMP 0x0011cc30
MOV RAX,qword ptr [RAX]
TEST RAX,RAX
JZ 0x0011cc30
MOV EDX,dword ptr [RAX + 0x8]
TEST EDX,EDX
JNZ 0x0011cb30
MOV RSI,qword ptr [0x002b5f90]
MOV R8,RSI
TEST byte ptr [RAX + 0x90],0x20
JZ 0x0011cb80
JMP 0x0011cc48
CMP RDX,qword ptr [RCX + 0x18]
JZ 0x0011cba1
MOV RAX,qword ptr [RAX + 0x20]
TEST RAX,RAX
JZ 0x0011cc37
TEST byte ptr [RAX + 0x90],0x20
JNZ 0x0011cc48
MOV RDX,qword ptr [RAX + 0x38]
TEST RDX,RDX
JZ 0x0011cb66
TEST byte ptr [RDX + 0x21],0x80
JNZ 0x0011cb66
MOV RCX,qword ptr [RDX + 0x10]
TEST RCX,RCX
JNZ 0x0011cb60
CMP RDX,qword ptr [RSI + 0x98]
JNZ 0x0011cb66
TEST RDI,RDI
JNZ 0x0011cc69
MOV RAX,qword ptr [RAX + 0x38]
NOP
TEST RAX,RAX
JZ 0x0011cb0b
MOV EDX,dword ptr [RAX + 0x20]
AND EDX,0x401
CMP EDX,0x1
JNZ 0x0011cbe2
JMP 0x0011cc43
MOV EDX,dword ptr [RAX + 0x20]
AND EDX,0x401
CMP EDX,0x1
JZ 0x0011cc68
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JNZ 0x0011cbd0
JMP 0x0011cb0b
CMP qword ptr [RSI + 0x98],RAX
JZ 0x0011cae0
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JNZ 0x0011cabd
NOP word ptr [RAX + RAX*0x1]
MOV RAX,qword ptr [RSI + 0x90]
TEST RAX,RAX
JZ 0x0011cb0b
MOV EDX,dword ptr [RAX + 0x20]
JMP 0x0011cae0
MOV R8,qword ptr [0x002b5f90]
MOV RAX,qword ptr [R8 + 0x98]
JMP 0x0011cbb0
RET
TEST RDI,RDI
JNZ 0x0011ca9a
MOV RAX,qword ptr [RAX + 0x38]
JMP 0x0011cbb0
RET
RET
TEST byte ptr [RAX + 0x90],0x20
JNZ 0x0011caa1
MOV RAX,qword ptr [RAX + 0x38]
JMP 0x0011cbb0
RET
(translation_unit "long FUN_0011ca80(void)\n\n{\n  byte bVar1;\n  long lVar2;\n  long *plVar3;\n  long lVar4;\n  uint uVar5;\n  \n  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);\njoined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }\n  lVar4 = *(long *)(DAT_002b5f90 + 0x90);\n  if (lVar4 == 0) {\n    return 0x2b46b0;\n  }\n  uVar5 = *(uint *)(lVar4 + 0x20);\nLAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }\n  do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n  return lVar4;\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  lVar4 = plVar3[7];\n  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = (long *)plVar3[4];\n  if (plVar3 == (long *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)(plVar3 + 0x12);\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;\n  lVar4 = *(long *)(lVar4 + 0x18);\n  goto joined_r0x0011caa8;\n}\n\n" (function_definition "long FUN_0011ca80(void)\n\n{\n  byte bVar1;\n  long lVar2;\n  long *plVar3;\n  long lVar4;\n  uint uVar5;\n  \n  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);\njoined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }\n  lVar4 = *(long *)(DAT_002b5f90 + 0x90);\n  if (lVar4 == 0) {\n    return 0x2b46b0;\n  }\n  uVar5 = *(uint *)(lVar4 + 0x20);\nLAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }\n  do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n  return lVar4;\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  lVar4 = plVar3[7];\n  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = (long *)plVar3[4];\n  if (plVar3 == (long *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)(plVar3 + 0x12);\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;\n  lVar4 = *(long *)(lVar4 + 0x18);\n  goto joined_r0x0011caa8;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0011ca80(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  long *plVar3;\n  long lVar4;\n  uint uVar5;\n  \n  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);\njoined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }\n  lVar4 = *(long *)(DAT_002b5f90 + 0x90);\n  if (lVar4 == 0) {\n    return 0x2b46b0;\n  }\n  uVar5 = *(uint *)(lVar4 + 0x20);\nLAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }\n  do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n  return lVar4;\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  lVar4 = plVar3[7];\n  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = (long *)plVar3[4];\n  if (plVar3 == (long *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)(plVar3 + 0x12);\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;\n  lVar4 = *(long *)(lVar4 + 0x18);\n  goto joined_r0x0011caa8;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (if_statement "if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }" if (parenthesized_expression "((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0))" ( (binary_expression "(DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)" (parenthesized_expression "(DAT_002b4cd0 == 0)" ( (binary_expression "DAT_002b4cd0 == 0" identifier == number_literal) )) || (parenthesized_expression "(DAT_002b4cc0 != 0)" ( (binary_expression "DAT_002b4cc0 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }" { (expression_statement "plVar3 = DAT_002b4cc8;" (assignment_expression "plVar3 = DAT_002b4cc8" identifier = identifier) ;) (if_statement "if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }" if (parenthesized_expression "(DAT_002b4cc8 != (long *)0x0)" ( (binary_expression "DAT_002b4cc8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }" { (do_statement "do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);" do (compound_statement "{\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      }" { (if_statement "if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }" if (parenthesized_expression "((int)plVar3[1] == 0)" ( (binary_expression "(int)plVar3[1] == 0" (cast_expression "(int)plVar3[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar3[1]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }" { (expression_statement "bVar1 = *(byte *)(plVar3 + 0x12);" (assignment_expression "bVar1 = *(byte *)(plVar3 + 0x12)" identifier = (pointer_expression "*(byte *)(plVar3 + 0x12)" * (cast_expression "(byte *)(plVar3 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x12)" ( (binary_expression "plVar3 + 0x12" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0011cb54;" goto statement_identifier ;) })) (expression_statement "plVar3 = (long *)*plVar3;" (assignment_expression "plVar3 = (long *)*plVar3" identifier = (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) }) while (parenthesized_expression "(plVar3 != (long *)0x0)" ( (binary_expression "plVar3 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);" statement_identifier : (expression_statement "lVar4 = *(long *)(DAT_002b5f90 + 0x98);" (assignment_expression "lVar4 = *(long *)(DAT_002b5f90 + 0x98)" identifier = (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" * (cast_expression "(long *)(DAT_002b5f90 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x98)" ( (binary_expression "DAT_002b5f90 + 0x98" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_0011cbb0;" goto statement_identifier ;) })) (labeled_statement "LAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);" statement_identifier : (expression_statement "lVar4 = *(long *)(DAT_002b4cd0 + 0x38);" (assignment_expression "lVar4 = *(long *)(DAT_002b4cd0 + 0x38)" identifier = (pointer_expression "*(long *)(DAT_002b4cd0 + 0x38)" * (cast_expression "(long *)(DAT_002b4cd0 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b4cd0 + 0x38)" ( (binary_expression "DAT_002b4cd0 + 0x38" identifier + number_literal) ))))) ;)) (labeled_statement "joined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" { (do_statement "do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );" do (compound_statement "{\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    }" { (expression_statement "uVar5 = *(uint *)(lVar4 + 0x20);" (assignment_expression "uVar5 = *(uint *)(lVar4 + 0x20)" identifier = (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) ))))) ;) (if_statement "if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }" if (parenthesized_expression "((uVar5 & 0x8401) == 1)" ( (binary_expression "(uVar5 & 0x8401) == 1" (parenthesized_expression "(uVar5 & 0x8401)" ( (binary_expression "uVar5 & 0x8401" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }" { (if_statement "if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;" if (parenthesized_expression "(*(long *)(lVar4 + 0x10) == 0)" ( (binary_expression "*(long *)(lVar4 + 0x10) == 0" (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0011cbf0;" goto statement_identifier ;)) (if_statement "if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;" if (parenthesized_expression "(*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4)" ( (binary_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4" (pointer_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18)" * (cast_expression "(long *)(*(long *)(lVar4 + 0x10) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x10) + 0x18)" ( (binary_expression "*(long *)(lVar4 + 0x10) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) + number_literal) )))) == identifier) )) (goto_statement "goto LAB_0011cae0;" goto statement_identifier ;)) })) (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" identifier = (pointer_expression "*(long *)(lVar4 + 0x18)" * (cast_expression "(long *)(lVar4 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) break;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "lVar4 = *(long *)(DAT_002b5f90 + 0x90);" (assignment_expression "lVar4 = *(long *)(DAT_002b5f90 + 0x90)" identifier = (pointer_expression "*(long *)(DAT_002b5f90 + 0x90)" * (cast_expression "(long *)(DAT_002b5f90 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x90)" ( (binary_expression "DAT_002b5f90 + 0x90" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n    return 0x2b46b0;\n  }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0x2b46b0;\n  }" { (return_statement "return 0x2b46b0;" return number_literal ;) })) (expression_statement "uVar5 = *(uint *)(lVar4 + 0x20);" (assignment_expression "uVar5 = *(uint *)(lVar4 + 0x20)" identifier = (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) ))))) ;) (labeled_statement "LAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }" statement_identifier : (if_statement "if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }" if (parenthesized_expression "((uVar5 & 0x401) == 1)" ( (binary_expression "(uVar5 & 0x401) == 1" (parenthesized_expression "(uVar5 & 0x401)" ( (binary_expression "uVar5 & 0x401" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return lVar4;\n  }" { (return_statement "return lVar4;" return identifier ;) }))) (do_statement "do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);" do (compound_statement "{\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  }" { (expression_statement "lVar4 = *(long *)(lVar4 + 0x10);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x10)" identifier = (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0x2b46b0;\n    }" { (return_statement "return 0x2b46b0;" return number_literal ;) })) }) while (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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) )) ;) (return_statement "return lVar4;" return identifier ;) (labeled_statement "joined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;" statement_identifier : (if_statement "if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;" if (parenthesized_expression "((bVar1 & 0x20) != 0)" ( (binary_expression "(bVar1 & 0x20) != 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0011cc48;" goto statement_identifier ;))) (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" identifier = (subscript_expression "plVar3[7]" identifier [ number_literal ])) ;) (if_statement "if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }" if (parenthesized_expression "((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0))" ( (binary_expression "(lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)" (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(lVar4 + 0x21) & 0x80) == 0)" ( (binary_expression "(*(byte *)(lVar4 + 0x21) & 0x80) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x21) & 0x80)" ( (binary_expression "*(byte *)(lVar4 + 0x21) & 0x80" (pointer_expression "*(byte *)(lVar4 + 0x21)" * (cast_expression "(byte *)(lVar4 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x21)" ( (binary_expression "lVar4 + 0x21" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }" { (if_statement "if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" if (parenthesized_expression "(*(long *)(lVar4 + 0x10) == 0)" ( (binary_expression "*(long *)(lVar4 + 0x10) == 0" (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }" { (expression_statement "lVar2 = *(long *)(DAT_002b5f90 + 0x98);" (assignment_expression "lVar2 = *(long *)(DAT_002b5f90 + 0x98)" identifier = (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" * (cast_expression "(long *)(DAT_002b5f90 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x98)" ( (binary_expression "DAT_002b5f90 + 0x98" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" else (compound_statement "{\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" { (expression_statement "lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);" (assignment_expression "lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18)" identifier = (pointer_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18)" * (cast_expression "(long *)(*(long *)(lVar4 + 0x10) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x10) + 0x18)" ( (binary_expression "*(long *)(lVar4 + 0x10) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) }))) (if_statement "if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }" if (parenthesized_expression "(lVar4 == lVar2)" ( (binary_expression "lVar4 == lVar2" identifier == identifier) )) (compound_statement "{\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }" { (if_statement "if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" if (parenthesized_expression "(DAT_002b4cd0 == 0)" ( (binary_expression "DAT_002b4cd0 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar4 = plVar3[7];\n      }" { (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" identifier = (subscript_expression "plVar3[7]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" else (compound_statement "{\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" { (if_statement "if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;" if (parenthesized_expression "((*(byte *)(plVar3 + 0x12) & 0x20) != 0)" ( (binary_expression "(*(byte *)(plVar3 + 0x12) & 0x20) != 0" (parenthesized_expression "(*(byte *)(plVar3 + 0x12) & 0x20)" ( (binary_expression "*(byte *)(plVar3 + 0x12) & 0x20" (pointer_expression "*(byte *)(plVar3 + 0x12)" * (cast_expression "(byte *)(plVar3 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x12)" ( (binary_expression "plVar3 + 0x12" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0011caa1;" goto statement_identifier ;)) (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" identifier = (subscript_expression "plVar3[7]" identifier [ number_literal ])) ;) }))) (goto_statement "goto LAB_0011cbb0;" goto statement_identifier ;) })) })) (expression_statement "plVar3 = (long *)plVar3[4];" (assignment_expression "plVar3 = (long *)plVar3[4]" identifier = (cast_expression "(long *)plVar3[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar3[4]" identifier [ number_literal ]))) ;) (if_statement "if (plVar3 == (long *)0x0) goto LAB_0011cc37;" if (parenthesized_expression "(plVar3 == (long *)0x0)" ( (binary_expression "plVar3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0011cc37;" goto statement_identifier ;)) (expression_statement "bVar1 = *(byte *)(plVar3 + 0x12);" (assignment_expression "bVar1 = *(byte *)(plVar3 + 0x12)" identifier = (pointer_expression "*(byte *)(plVar3 + 0x12)" * (cast_expression "(byte *)(plVar3 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x12)" ( (binary_expression "plVar3 + 0x12" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0011cb54;" goto statement_identifier ;) (labeled_statement "LAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" statement_identifier : (if_statement "if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" if (parenthesized_expression "(DAT_002b4cd0 == 0)" ( (binary_expression "DAT_002b4cd0 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" { (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" identifier = (subscript_expression "plVar3[7]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" statement_identifier : (if_statement "if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0x2b46b0;\n    }" { (return_statement "return 0x2b46b0;" return number_literal ;) }))) (if_statement "if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }" if (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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) )) (compound_statement "{\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }" { (do_statement "do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);" do (compound_statement "{\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      }" { (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" identifier = (pointer_expression "*(long *)(lVar4 + 0x18)" * (cast_expression "(long *)(lVar4 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n          return 0x2b46b0;\n        }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0x2b46b0;\n        }" { (return_statement "return 0x2b46b0;" return number_literal ;) })) }) while (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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) )) ;) (return_statement "return lVar4;" return identifier ;) })) (return_statement "return lVar4;" return identifier ;) }))) (goto_statement "goto LAB_0011caa1;" goto statement_identifier ;) (labeled_statement "LAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;" statement_identifier : (if_statement "if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;" if (parenthesized_expression "(*(long *)(DAT_002b5f90 + 0x98) == lVar4)" ( (binary_expression "*(long *)(DAT_002b5f90 + 0x98) == lVar4" (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" * (cast_expression "(long *)(DAT_002b5f90 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x98)" ( (binary_expression "DAT_002b5f90 + 0x98" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_0011cae0;" goto statement_identifier ;))) (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" identifier = (pointer_expression "*(long *)(lVar4 + 0x18)" * (cast_expression "(long *)(lVar4 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0011caa8;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nasection * section_for_dot(void)\n\n{\n  byte bVar1;\n  bfd_section *pbVar2;\n  lang_statement_union *plVar3;\n  bfd_section *pbVar4;\n  flagword fVar5;\n  \n  if ((current_section == (lang_output_section_statement_type *)0x0) || (prefer_next_section != 0))\n  {\n    plVar3 = (lang_statement_union *)current_assign;\n    if (current_assign != (lang_assignment_statement_type *)0x0) {\n      do {\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      } while (plVar3 != (lang_statement_union *)0x0);\n    }\nLAB_0011cc37:\n    pbVar4 = (link_info.output_bfd)->section_last;\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  pbVar4 = current_section->bfd_section;\njoined_r0x0011caa8:\n  if (pbVar4 != (asection *)0x0) {\n    do {\n      fVar5 = pbVar4->flags;\n      if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }\n      pbVar4 = pbVar4->prev;\n      if (pbVar4 == (bfd_section *)0x0) break;\n    } while( true );\n  }\n  pbVar4 = (link_info.output_bfd)->sections;\n  if (pbVar4 == (bfd_section *)0x0) goto LAB_0011cb0b;\n  fVar5 = pbVar4->flags;\nLAB_0011cae0:\n  if ((fVar5 & 0x401) == 1) {\n    return pbVar4;\n  }\n  while( true ) {\n    pbVar4 = pbVar4->next;\n    if (pbVar4 == (bfd_section *)0x0) break;\n    if ((pbVar4->flags & 0x401) == 1) {\n      return pbVar4;\n    }\n  }\nLAB_0011cb0b:\n  return (asection *)(_bfd_std_section + 0x230);\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n  if ((pbVar4 != (bfd_section *)0x0) && ((pbVar4->flags & 0x8000) == 0)) {\n    if (pbVar4->next == (bfd_section *)0x0) {\n      pbVar2 = (link_info.output_bfd)->section_last;\n    }\n    else {\n      pbVar2 = pbVar4->next->prev;\n    }\n    if (pbVar4 == pbVar2) {\n      if (current_section == (lang_output_section_statement_type *)0x0) {\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = *(lang_statement_union **)&(&plVar3->assignment_statement)[1].header.type;\n  if (plVar3 == (lang_statement_union *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (current_section == (lang_output_section_statement_type *)0x0) {\n    pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\nLAB_0011cbb0:\n    if (pbVar4 != (asection *)0x0) {\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }\n    goto LAB_0011cb0b;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if ((link_info.output_bfd)->section_last == pbVar4) goto LAB_0011cae0;\n  pbVar4 = pbVar4->prev;\n  goto joined_r0x0011caa8;\n}\n\n" comment (function_definition "asection * section_for_dot(void)\n\n{\n  byte bVar1;\n  bfd_section *pbVar2;\n  lang_statement_union *plVar3;\n  bfd_section *pbVar4;\n  flagword fVar5;\n  \n  if ((current_section == (lang_output_section_statement_type *)0x0) || (prefer_next_section != 0))\n  {\n    plVar3 = (lang_statement_union *)current_assign;\n    if (current_assign != (lang_assignment_statement_type *)0x0) {\n      do {\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      } while (plVar3 != (lang_statement_union *)0x0);\n    }\nLAB_0011cc37:\n    pbVar4 = (link_info.output_bfd)->section_last;\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  pbVar4 = current_section->bfd_section;\njoined_r0x0011caa8:\n  if (pbVar4 != (asection *)0x0) {\n    do {\n      fVar5 = pbVar4->flags;\n      if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }\n      pbVar4 = pbVar4->prev;\n      if (pbVar4 == (bfd_section *)0x0) break;\n    } while( true );\n  }\n  pbVar4 = (link_info.output_bfd)->sections;\n  if (pbVar4 == (bfd_section *)0x0) goto LAB_0011cb0b;\n  fVar5 = pbVar4->flags;\nLAB_0011cae0:\n  if ((fVar5 & 0x401) == 1) {\n    return pbVar4;\n  }\n  while( true ) {\n    pbVar4 = pbVar4->next;\n    if (pbVar4 == (bfd_section *)0x0) break;\n    if ((pbVar4->flags & 0x401) == 1) {\n      return pbVar4;\n    }\n  }\nLAB_0011cb0b:\n  return (asection *)(_bfd_std_section + 0x230);\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n  if ((pbVar4 != (bfd_section *)0x0) && ((pbVar4->flags & 0x8000) == 0)) {\n    if (pbVar4->next == (bfd_section *)0x0) {\n      pbVar2 = (link_info.output_bfd)->section_last;\n    }\n    else {\n      pbVar2 = pbVar4->next->prev;\n    }\n    if (pbVar4 == pbVar2) {\n      if (current_section == (lang_output_section_statement_type *)0x0) {\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = *(lang_statement_union **)&(&plVar3->assignment_statement)[1].header.type;\n  if (plVar3 == (lang_statement_union *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (current_section == (lang_output_section_statement_type *)0x0) {\n    pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\nLAB_0011cbb0:\n    if (pbVar4 != (asection *)0x0) {\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }\n    goto LAB_0011cb0b;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if ((link_info.output_bfd)->section_last == pbVar4) goto LAB_0011cae0;\n  pbVar4 = pbVar4->prev;\n  goto joined_r0x0011caa8;\n}" type_identifier (pointer_declarator "* section_for_dot(void)" * (function_declarator "section_for_dot(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  byte bVar1;\n  bfd_section *pbVar2;\n  lang_statement_union *plVar3;\n  bfd_section *pbVar4;\n  flagword fVar5;\n  \n  if ((current_section == (lang_output_section_statement_type *)0x0) || (prefer_next_section != 0))\n  {\n    plVar3 = (lang_statement_union *)current_assign;\n    if (current_assign != (lang_assignment_statement_type *)0x0) {\n      do {\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      } while (plVar3 != (lang_statement_union *)0x0);\n    }\nLAB_0011cc37:\n    pbVar4 = (link_info.output_bfd)->section_last;\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  pbVar4 = current_section->bfd_section;\njoined_r0x0011caa8:\n  if (pbVar4 != (asection *)0x0) {\n    do {\n      fVar5 = pbVar4->flags;\n      if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }\n      pbVar4 = pbVar4->prev;\n      if (pbVar4 == (bfd_section *)0x0) break;\n    } while( true );\n  }\n  pbVar4 = (link_info.output_bfd)->sections;\n  if (pbVar4 == (bfd_section *)0x0) goto LAB_0011cb0b;\n  fVar5 = pbVar4->flags;\nLAB_0011cae0:\n  if ((fVar5 & 0x401) == 1) {\n    return pbVar4;\n  }\n  while( true ) {\n    pbVar4 = pbVar4->next;\n    if (pbVar4 == (bfd_section *)0x0) break;\n    if ((pbVar4->flags & 0x401) == 1) {\n      return pbVar4;\n    }\n  }\nLAB_0011cb0b:\n  return (asection *)(_bfd_std_section + 0x230);\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n  if ((pbVar4 != (bfd_section *)0x0) && ((pbVar4->flags & 0x8000) == 0)) {\n    if (pbVar4->next == (bfd_section *)0x0) {\n      pbVar2 = (link_info.output_bfd)->section_last;\n    }\n    else {\n      pbVar2 = pbVar4->next->prev;\n    }\n    if (pbVar4 == pbVar2) {\n      if (current_section == (lang_output_section_statement_type *)0x0) {\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = *(lang_statement_union **)&(&plVar3->assignment_statement)[1].header.type;\n  if (plVar3 == (lang_statement_union *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (current_section == (lang_output_section_statement_type *)0x0) {\n    pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\nLAB_0011cbb0:\n    if (pbVar4 != (asection *)0x0) {\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }\n    goto LAB_0011cb0b;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if ((link_info.output_bfd)->section_last == pbVar4) goto LAB_0011cae0;\n  pbVar4 = pbVar4->prev;\n  goto joined_r0x0011caa8;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bfd_section *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "lang_statement_union *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "bfd_section *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "flagword fVar5;" type_identifier identifier ;) (if_statement "if ((current_section == (lang_output_section_statement_type *)0x0) || (prefer_next_section != 0))\n  {\n    plVar3 = (lang_statement_union *)current_assign;\n    if (current_assign != (lang_assignment_statement_type *)0x0) {\n      do {\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      } while (plVar3 != (lang_statement_union *)0x0);\n    }\nLAB_0011cc37:\n    pbVar4 = (link_info.output_bfd)->section_last;\n    goto LAB_0011cbb0;\n  }" if (parenthesized_expression "((current_section == (lang_output_section_statement_type *)0x0) || (prefer_next_section != 0))" ( (binary_expression "(current_section == (lang_output_section_statement_type *)0x0) || (prefer_next_section != 0)" (parenthesized_expression "(current_section == (lang_output_section_statement_type *)0x0)" ( (binary_expression "current_section == (lang_output_section_statement_type *)0x0" identifier == (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(prefer_next_section != 0)" ( (binary_expression "prefer_next_section != 0" identifier != number_literal) ))) )) (compound_statement "{\n    plVar3 = (lang_statement_union *)current_assign;\n    if (current_assign != (lang_assignment_statement_type *)0x0) {\n      do {\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      } while (plVar3 != (lang_statement_union *)0x0);\n    }\nLAB_0011cc37:\n    pbVar4 = (link_info.output_bfd)->section_last;\n    goto LAB_0011cbb0;\n  }" { (expression_statement "plVar3 = (lang_statement_union *)current_assign;" (assignment_expression "plVar3 = (lang_statement_union *)current_assign" identifier = (cast_expression "(lang_statement_union *)current_assign" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (current_assign != (lang_assignment_statement_type *)0x0) {\n      do {\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      } while (plVar3 != (lang_statement_union *)0x0);\n    }" if (parenthesized_expression "(current_assign != (lang_assignment_statement_type *)0x0)" ( (binary_expression "current_assign != (lang_assignment_statement_type *)0x0" identifier != (cast_expression "(lang_assignment_statement_type *)0x0" ( (type_descriptor "lang_assignment_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      } while (plVar3 != (lang_statement_union *)0x0);\n    }" { (do_statement "do {\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      } while (plVar3 != (lang_statement_union *)0x0);" do (compound_statement "{\n        if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (plVar3->wild_statement).header.next;\n      }" { (if_statement "if ((plVar3->wild_statement).header.type == lang_output_section_statement_enum) {\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }" if (parenthesized_expression "((plVar3->wild_statement).header.type == lang_output_section_statement_enum)" ( (binary_expression "(plVar3->wild_statement).header.type == lang_output_section_statement_enum" (field_expression "(plVar3->wild_statement).header.type" (field_expression "(plVar3->wild_statement).header" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier) == identifier) )) (compound_statement "{\n          bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;\n          goto joined_r0x0011cb54;\n        }" { (expression_statement "bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;" (assignment_expression "bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next" identifier = (pointer_expression "*(byte *)&(&plVar3->assignment_statement)[6].header.next" * (cast_expression "(byte *)&(&plVar3->assignment_statement)[6].header.next" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(&plVar3->assignment_statement)[6].header.next" & (field_expression "(&plVar3->assignment_statement)[6].header.next" (field_expression "(&plVar3->assignment_statement)[6].header" (subscript_expression "(&plVar3->assignment_statement)[6]" (parenthesized_expression "(&plVar3->assignment_statement)" ( (pointer_expression "&plVar3->assignment_statement" & (field_expression "plVar3->assignment_statement" identifier -> field_identifier)) )) [ number_literal ]) . field_identifier) . field_identifier))))) ;) (goto_statement "goto joined_r0x0011cb54;" goto statement_identifier ;) })) (expression_statement "plVar3 = (plVar3->wild_statement).header.next;" (assignment_expression "plVar3 = (plVar3->wild_statement).header.next" identifier = (field_expression "(plVar3->wild_statement).header.next" (field_expression "(plVar3->wild_statement).header" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }) while (parenthesized_expression "(plVar3 != (lang_statement_union *)0x0)" ( (binary_expression "plVar3 != (lang_statement_union *)0x0" identifier != (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_0011cc37:\n    pbVar4 = (link_info.output_bfd)->section_last;" statement_identifier : (expression_statement "pbVar4 = (link_info.output_bfd)->section_last;" (assignment_expression "pbVar4 = (link_info.output_bfd)->section_last" identifier = (field_expression "(link_info.output_bfd)->section_last" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier)) ;)) (goto_statement "goto LAB_0011cbb0;" goto statement_identifier ;) })) (labeled_statement "LAB_0011caa1:\n  pbVar4 = current_section->bfd_section;" statement_identifier : (expression_statement "pbVar4 = current_section->bfd_section;" (assignment_expression "pbVar4 = current_section->bfd_section" identifier = (field_expression "current_section->bfd_section" identifier -> field_identifier)) ;)) (labeled_statement "joined_r0x0011caa8:\n  if (pbVar4 != (asection *)0x0) {\n    do {\n      fVar5 = pbVar4->flags;\n      if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }\n      pbVar4 = pbVar4->prev;\n      if (pbVar4 == (bfd_section *)0x0) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (pbVar4 != (asection *)0x0) {\n    do {\n      fVar5 = pbVar4->flags;\n      if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }\n      pbVar4 = pbVar4->prev;\n      if (pbVar4 == (bfd_section *)0x0) break;\n    } while( true );\n  }" if (parenthesized_expression "(pbVar4 != (asection *)0x0)" ( (binary_expression "pbVar4 != (asection *)0x0" identifier != (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      fVar5 = pbVar4->flags;\n      if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }\n      pbVar4 = pbVar4->prev;\n      if (pbVar4 == (bfd_section *)0x0) break;\n    } while( true );\n  }" { (do_statement "do {\n      fVar5 = pbVar4->flags;\n      if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }\n      pbVar4 = pbVar4->prev;\n      if (pbVar4 == (bfd_section *)0x0) break;\n    } while( true );" do (compound_statement "{\n      fVar5 = pbVar4->flags;\n      if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }\n      pbVar4 = pbVar4->prev;\n      if (pbVar4 == (bfd_section *)0x0) break;\n    }" { (expression_statement "fVar5 = pbVar4->flags;" (assignment_expression "fVar5 = pbVar4->flags" identifier = (field_expression "pbVar4->flags" identifier -> field_identifier)) ;) (if_statement "if ((fVar5 & 0x8401) == 1) {\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }" if (parenthesized_expression "((fVar5 & 0x8401) == 1)" ( (binary_expression "(fVar5 & 0x8401) == 1" (parenthesized_expression "(fVar5 & 0x8401)" ( (binary_expression "fVar5 & 0x8401" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;\n        if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;\n      }" { (if_statement "if (pbVar4->next == (bfd_section *)0x0) goto LAB_0011cbf0;" if (parenthesized_expression "(pbVar4->next == (bfd_section *)0x0)" ( (binary_expression "pbVar4->next == (bfd_section *)0x0" (field_expression "pbVar4->next" identifier -> field_identifier) == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0011cbf0;" goto statement_identifier ;)) (if_statement "if (pbVar4->next->prev == pbVar4) goto LAB_0011cae0;" if (parenthesized_expression "(pbVar4->next->prev == pbVar4)" ( (binary_expression "pbVar4->next->prev == pbVar4" (field_expression "pbVar4->next->prev" (field_expression "pbVar4->next" identifier -> field_identifier) -> field_identifier) == identifier) )) (goto_statement "goto LAB_0011cae0;" goto statement_identifier ;)) })) (expression_statement "pbVar4 = pbVar4->prev;" (assignment_expression "pbVar4 = pbVar4->prev" identifier = (field_expression "pbVar4->prev" identifier -> field_identifier)) ;) (if_statement "if (pbVar4 == (bfd_section *)0x0) break;" if (parenthesized_expression "(pbVar4 == (bfd_section *)0x0)" ( (binary_expression "pbVar4 == (bfd_section *)0x0" identifier == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "pbVar4 = (link_info.output_bfd)->sections;" (assignment_expression "pbVar4 = (link_info.output_bfd)->sections" identifier = (field_expression "(link_info.output_bfd)->sections" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier)) ;) (if_statement "if (pbVar4 == (bfd_section *)0x0) goto LAB_0011cb0b;" if (parenthesized_expression "(pbVar4 == (bfd_section *)0x0)" ( (binary_expression "pbVar4 == (bfd_section *)0x0" identifier == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0011cb0b;" goto statement_identifier ;)) (expression_statement "fVar5 = pbVar4->flags;" (assignment_expression "fVar5 = pbVar4->flags" identifier = (field_expression "pbVar4->flags" identifier -> field_identifier)) ;) (labeled_statement "LAB_0011cae0:\n  if ((fVar5 & 0x401) == 1) {\n    return pbVar4;\n  }" statement_identifier : (if_statement "if ((fVar5 & 0x401) == 1) {\n    return pbVar4;\n  }" if (parenthesized_expression "((fVar5 & 0x401) == 1)" ( (binary_expression "(fVar5 & 0x401) == 1" (parenthesized_expression "(fVar5 & 0x401)" ( (binary_expression "fVar5 & 0x401" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return pbVar4;\n  }" { (return_statement "return pbVar4;" return identifier ;) }))) (while_statement "while( true ) {\n    pbVar4 = pbVar4->next;\n    if (pbVar4 == (bfd_section *)0x0) break;\n    if ((pbVar4->flags & 0x401) == 1) {\n      return pbVar4;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pbVar4 = pbVar4->next;\n    if (pbVar4 == (bfd_section *)0x0) break;\n    if ((pbVar4->flags & 0x401) == 1) {\n      return pbVar4;\n    }\n  }" { (expression_statement "pbVar4 = pbVar4->next;" (assignment_expression "pbVar4 = pbVar4->next" identifier = (field_expression "pbVar4->next" identifier -> field_identifier)) ;) (if_statement "if (pbVar4 == (bfd_section *)0x0) break;" if (parenthesized_expression "(pbVar4 == (bfd_section *)0x0)" ( (binary_expression "pbVar4 == (bfd_section *)0x0" identifier == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if ((pbVar4->flags & 0x401) == 1) {\n      return pbVar4;\n    }" if (parenthesized_expression "((pbVar4->flags & 0x401) == 1)" ( (binary_expression "(pbVar4->flags & 0x401) == 1" (parenthesized_expression "(pbVar4->flags & 0x401)" ( (binary_expression "pbVar4->flags & 0x401" (field_expression "pbVar4->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      return pbVar4;\n    }" { (return_statement "return pbVar4;" return identifier ;) })) })) (labeled_statement "LAB_0011cb0b:\n  return (asection *)(_bfd_std_section + 0x230);" statement_identifier : (return_statement "return (asection *)(_bfd_std_section + 0x230);" return (cast_expression "(asection *)(_bfd_std_section + 0x230)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x230)" ( (binary_expression "_bfd_std_section + 0x230" identifier + number_literal) ))) ;)) (labeled_statement "joined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;" statement_identifier : (if_statement "if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;" if (parenthesized_expression "((bVar1 & 0x20) != 0)" ( (binary_expression "(bVar1 & 0x20) != 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0011cc48;" goto statement_identifier ;))) (expression_statement "pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;" (assignment_expression "pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" identifier = (pointer_expression "*(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" * (cast_expression "(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" ( (type_descriptor "bfd_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(&plVar3->assignment_statement)[2].header.type" & (field_expression "(&plVar3->assignment_statement)[2].header.type" (field_expression "(&plVar3->assignment_statement)[2].header" (subscript_expression "(&plVar3->assignment_statement)[2]" (parenthesized_expression "(&plVar3->assignment_statement)" ( (pointer_expression "&plVar3->assignment_statement" & (field_expression "plVar3->assignment_statement" identifier -> field_identifier)) )) [ number_literal ]) . field_identifier) . field_identifier))))) ;) (if_statement "if ((pbVar4 != (bfd_section *)0x0) && ((pbVar4->flags & 0x8000) == 0)) {\n    if (pbVar4->next == (bfd_section *)0x0) {\n      pbVar2 = (link_info.output_bfd)->section_last;\n    }\n    else {\n      pbVar2 = pbVar4->next->prev;\n    }\n    if (pbVar4 == pbVar2) {\n      if (current_section == (lang_output_section_statement_type *)0x0) {\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      goto LAB_0011cbb0;\n    }\n  }" if (parenthesized_expression "((pbVar4 != (bfd_section *)0x0) && ((pbVar4->flags & 0x8000) == 0))" ( (binary_expression "(pbVar4 != (bfd_section *)0x0) && ((pbVar4->flags & 0x8000) == 0)" (parenthesized_expression "(pbVar4 != (bfd_section *)0x0)" ( (binary_expression "pbVar4 != (bfd_section *)0x0" identifier != (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((pbVar4->flags & 0x8000) == 0)" ( (binary_expression "(pbVar4->flags & 0x8000) == 0" (parenthesized_expression "(pbVar4->flags & 0x8000)" ( (binary_expression "pbVar4->flags & 0x8000" (field_expression "pbVar4->flags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    if (pbVar4->next == (bfd_section *)0x0) {\n      pbVar2 = (link_info.output_bfd)->section_last;\n    }\n    else {\n      pbVar2 = pbVar4->next->prev;\n    }\n    if (pbVar4 == pbVar2) {\n      if (current_section == (lang_output_section_statement_type *)0x0) {\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      goto LAB_0011cbb0;\n    }\n  }" { (if_statement "if (pbVar4->next == (bfd_section *)0x0) {\n      pbVar2 = (link_info.output_bfd)->section_last;\n    }\n    else {\n      pbVar2 = pbVar4->next->prev;\n    }" if (parenthesized_expression "(pbVar4->next == (bfd_section *)0x0)" ( (binary_expression "pbVar4->next == (bfd_section *)0x0" (field_expression "pbVar4->next" identifier -> field_identifier) == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pbVar2 = (link_info.output_bfd)->section_last;\n    }" { (expression_statement "pbVar2 = (link_info.output_bfd)->section_last;" (assignment_expression "pbVar2 = (link_info.output_bfd)->section_last" identifier = (field_expression "(link_info.output_bfd)->section_last" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier)) ;) }) (else_clause "else {\n      pbVar2 = pbVar4->next->prev;\n    }" else (compound_statement "{\n      pbVar2 = pbVar4->next->prev;\n    }" { (expression_statement "pbVar2 = pbVar4->next->prev;" (assignment_expression "pbVar2 = pbVar4->next->prev" identifier = (field_expression "pbVar4->next->prev" (field_expression "pbVar4->next" identifier -> field_identifier) -> field_identifier)) ;) }))) (if_statement "if (pbVar4 == pbVar2) {\n      if (current_section == (lang_output_section_statement_type *)0x0) {\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      goto LAB_0011cbb0;\n    }" if (parenthesized_expression "(pbVar4 == pbVar2)" ( (binary_expression "pbVar4 == pbVar2" identifier == identifier) )) (compound_statement "{\n      if (current_section == (lang_output_section_statement_type *)0x0) {\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      goto LAB_0011cbb0;\n    }" { (if_statement "if (current_section == (lang_output_section_statement_type *)0x0) {\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }\n      else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }" if (parenthesized_expression "(current_section == (lang_output_section_statement_type *)0x0)" ( (binary_expression "current_section == (lang_output_section_statement_type *)0x0" identifier == (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }" { (expression_statement "pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;" (assignment_expression "pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" identifier = (pointer_expression "*(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" * (cast_expression "(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" ( (type_descriptor "bfd_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(&plVar3->assignment_statement)[2].header.type" & (field_expression "(&plVar3->assignment_statement)[2].header.type" (field_expression "(&plVar3->assignment_statement)[2].header" (subscript_expression "(&plVar3->assignment_statement)[2]" (parenthesized_expression "(&plVar3->assignment_statement)" ( (pointer_expression "&plVar3->assignment_statement" & (field_expression "plVar3->assignment_statement" identifier -> field_identifier)) )) [ number_literal ]) . field_identifier) . field_identifier))))) ;) }) (else_clause "else {\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }" else (compound_statement "{\n        if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;\n        pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\n      }" { (if_statement "if (((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;" if (parenthesized_expression "(((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0)" ( (binary_expression "((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20) != 0" (parenthesized_expression "((ulong)(&plVar3->assignment_statement)[6].header.next & 0x20)" ( (binary_expression "(ulong)(&plVar3->assignment_statement)[6].header.next & 0x20" (field_expression "(ulong)(&plVar3->assignment_statement)[6].header.next" (field_expression "(ulong)(&plVar3->assignment_statement)[6].header" (subscript_expression "(ulong)(&plVar3->assignment_statement)[6]" (call_expression "(ulong)(&plVar3->assignment_statement)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(&plVar3->assignment_statement)" ( (pointer_expression "&plVar3->assignment_statement" & (field_expression "plVar3->assignment_statement" identifier -> field_identifier)) ))) [ number_literal ]) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0011caa1;" goto statement_identifier ;)) (expression_statement "pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;" (assignment_expression "pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" identifier = (pointer_expression "*(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" * (cast_expression "(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" ( (type_descriptor "bfd_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(&plVar3->assignment_statement)[2].header.type" & (field_expression "(&plVar3->assignment_statement)[2].header.type" (field_expression "(&plVar3->assignment_statement)[2].header" (subscript_expression "(&plVar3->assignment_statement)[2]" (parenthesized_expression "(&plVar3->assignment_statement)" ( (pointer_expression "&plVar3->assignment_statement" & (field_expression "plVar3->assignment_statement" identifier -> field_identifier)) )) [ number_literal ]) . field_identifier) . field_identifier))))) ;) }))) (goto_statement "goto LAB_0011cbb0;" goto statement_identifier ;) })) })) (expression_statement "plVar3 = *(lang_statement_union **)&(&plVar3->assignment_statement)[1].header.type;" (assignment_expression "plVar3 = *(lang_statement_union **)&(&plVar3->assignment_statement)[1].header.type" identifier = (pointer_expression "*(lang_statement_union **)&(&plVar3->assignment_statement)[1].header.type" * (cast_expression "(lang_statement_union **)&(&plVar3->assignment_statement)[1].header.type" ( (type_descriptor "lang_statement_union **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(&plVar3->assignment_statement)[1].header.type" & (field_expression "(&plVar3->assignment_statement)[1].header.type" (field_expression "(&plVar3->assignment_statement)[1].header" (subscript_expression "(&plVar3->assignment_statement)[1]" (parenthesized_expression "(&plVar3->assignment_statement)" ( (pointer_expression "&plVar3->assignment_statement" & (field_expression "plVar3->assignment_statement" identifier -> field_identifier)) )) [ number_literal ]) . field_identifier) . field_identifier))))) ;) (if_statement "if (plVar3 == (lang_statement_union *)0x0) goto LAB_0011cc37;" if (parenthesized_expression "(plVar3 == (lang_statement_union *)0x0)" ( (binary_expression "plVar3 == (lang_statement_union *)0x0" identifier == (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0011cc37;" goto statement_identifier ;)) (expression_statement "bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next;" (assignment_expression "bVar1 = *(byte *)&(&plVar3->assignment_statement)[6].header.next" identifier = (pointer_expression "*(byte *)&(&plVar3->assignment_statement)[6].header.next" * (cast_expression "(byte *)&(&plVar3->assignment_statement)[6].header.next" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(&plVar3->assignment_statement)[6].header.next" & (field_expression "(&plVar3->assignment_statement)[6].header.next" (field_expression "(&plVar3->assignment_statement)[6].header" (subscript_expression "(&plVar3->assignment_statement)[6]" (parenthesized_expression "(&plVar3->assignment_statement)" ( (pointer_expression "&plVar3->assignment_statement" & (field_expression "plVar3->assignment_statement" identifier -> field_identifier)) )) [ number_literal ]) . field_identifier) . field_identifier))))) ;) (goto_statement "goto joined_r0x0011cb54;" goto statement_identifier ;) (labeled_statement "LAB_0011cc48:\n  if (current_section == (lang_output_section_statement_type *)0x0) {\n    pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\nLAB_0011cbb0:\n    if (pbVar4 != (asection *)0x0) {\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }\n    goto LAB_0011cb0b;\n  }" statement_identifier : (if_statement "if (current_section == (lang_output_section_statement_type *)0x0) {\n    pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\nLAB_0011cbb0:\n    if (pbVar4 != (asection *)0x0) {\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }\n    goto LAB_0011cb0b;\n  }" if (parenthesized_expression "(current_section == (lang_output_section_statement_type *)0x0)" ( (binary_expression "current_section == (lang_output_section_statement_type *)0x0" identifier == (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;\nLAB_0011cbb0:\n    if (pbVar4 != (asection *)0x0) {\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }\n    goto LAB_0011cb0b;\n  }" { (expression_statement "pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type;" (assignment_expression "pbVar4 = *(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" identifier = (pointer_expression "*(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" * (cast_expression "(bfd_section **)&(&plVar3->assignment_statement)[2].header.type" ( (type_descriptor "bfd_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(&plVar3->assignment_statement)[2].header.type" & (field_expression "(&plVar3->assignment_statement)[2].header.type" (field_expression "(&plVar3->assignment_statement)[2].header" (subscript_expression "(&plVar3->assignment_statement)[2]" (parenthesized_expression "(&plVar3->assignment_statement)" ( (pointer_expression "&plVar3->assignment_statement" & (field_expression "plVar3->assignment_statement" identifier -> field_identifier)) )) [ number_literal ]) . field_identifier) . field_identifier))))) ;) (labeled_statement "LAB_0011cbb0:\n    if (pbVar4 != (asection *)0x0) {\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }" statement_identifier : (if_statement "if (pbVar4 != (asection *)0x0) {\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }" if (parenthesized_expression "(pbVar4 != (asection *)0x0)" ( (binary_expression "pbVar4 != (asection *)0x0" identifier != (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }\n      while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }\n    }" { (if_statement "if ((pbVar4->flags & 0x401) == 1) {\n        return pbVar4;\n      }" if (parenthesized_expression "((pbVar4->flags & 0x401) == 1)" ( (binary_expression "(pbVar4->flags & 0x401) == 1" (parenthesized_expression "(pbVar4->flags & 0x401)" ( (binary_expression "pbVar4->flags & 0x401" (field_expression "pbVar4->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        return pbVar4;\n      }" { (return_statement "return pbVar4;" return identifier ;) })) (while_statement "while( true ) {\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pbVar4 = pbVar4->prev;\n        if (pbVar4 == (bfd_section *)0x0) break;\n        if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }\n      }" { (expression_statement "pbVar4 = pbVar4->prev;" (assignment_expression "pbVar4 = pbVar4->prev" identifier = (field_expression "pbVar4->prev" identifier -> field_identifier)) ;) (if_statement "if (pbVar4 == (bfd_section *)0x0) break;" if (parenthesized_expression "(pbVar4 == (bfd_section *)0x0)" ( (binary_expression "pbVar4 == (bfd_section *)0x0" identifier == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if ((pbVar4->flags & 0x401) == 1) {\n          return pbVar4;\n        }" if (parenthesized_expression "((pbVar4->flags & 0x401) == 1)" ( (binary_expression "(pbVar4->flags & 0x401) == 1" (parenthesized_expression "(pbVar4->flags & 0x401)" ( (binary_expression "pbVar4->flags & 0x401" (field_expression "pbVar4->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          return pbVar4;\n        }" { (return_statement "return pbVar4;" return identifier ;) })) })) }))) (goto_statement "goto LAB_0011cb0b;" goto statement_identifier ;) }))) (goto_statement "goto LAB_0011caa1;" goto statement_identifier ;) (labeled_statement "LAB_0011cbf0:\n  if ((link_info.output_bfd)->section_last == pbVar4) goto LAB_0011cae0;" statement_identifier : (if_statement "if ((link_info.output_bfd)->section_last == pbVar4) goto LAB_0011cae0;" if (parenthesized_expression "((link_info.output_bfd)->section_last == pbVar4)" ( (binary_expression "(link_info.output_bfd)->section_last == pbVar4" (field_expression "(link_info.output_bfd)->section_last" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier) == identifier) )) (goto_statement "goto LAB_0011cae0;" goto statement_identifier ;))) (expression_statement "pbVar4 = pbVar4->prev;" (assignment_expression "pbVar4 = pbVar4->prev" identifier = (field_expression "pbVar4->prev" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x0011caa8;" goto statement_identifier ;) })))
(translation_unit "long FUN_0011ca80(void)\n\n{\n  byte bVar1;\n  long lVar2;\n  long *plVar3;\n  long lVar4;\n  uint uVar5;\n  \n  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);\njoined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }\n  lVar4 = *(long *)(DAT_002b5f90 + 0x90);\n  if (lVar4 == 0) {\n    return 0x2b46b0;\n  }\n  uVar5 = *(uint *)(lVar4 + 0x20);\nLAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }\n  do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n  return lVar4;\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  lVar4 = plVar3[7];\n  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = (long *)plVar3[4];\n  if (plVar3 == (long *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)(plVar3 + 0x12);\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;\n  lVar4 = *(long *)(lVar4 + 0x18);\n  goto joined_r0x0011caa8;\n}\n\n" (function_definition "long FUN_0011ca80(void)\n\n{\n  byte bVar1;\n  long lVar2;\n  long *plVar3;\n  long lVar4;\n  uint uVar5;\n  \n  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);\njoined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }\n  lVar4 = *(long *)(DAT_002b5f90 + 0x90);\n  if (lVar4 == 0) {\n    return 0x2b46b0;\n  }\n  uVar5 = *(uint *)(lVar4 + 0x20);\nLAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }\n  do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n  return lVar4;\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  lVar4 = plVar3[7];\n  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = (long *)plVar3[4];\n  if (plVar3 == (long *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)(plVar3 + 0x12);\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;\n  lVar4 = *(long *)(lVar4 + 0x18);\n  goto joined_r0x0011caa8;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0011ca80(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  long *plVar3;\n  long lVar4;\n  uint uVar5;\n  \n  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);\njoined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }\n  lVar4 = *(long *)(DAT_002b5f90 + 0x90);\n  if (lVar4 == 0) {\n    return 0x2b46b0;\n  }\n  uVar5 = *(uint *)(lVar4 + 0x20);\nLAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }\n  do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n  return lVar4;\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  lVar4 = plVar3[7];\n  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = (long *)plVar3[4];\n  if (plVar3 == (long *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)(plVar3 + 0x12);\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;\n  lVar4 = *(long *)(lVar4 + 0x18);\n  goto joined_r0x0011caa8;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (if_statement "if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }" if (parenthesized_expression "((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0))" ( (binary_expression "(DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)" (parenthesized_expression "(DAT_002b4cd0 == 0)" ( (binary_expression "DAT_002b4cd0 == 0" identifier == number_literal) )) || (parenthesized_expression "(DAT_002b4cc0 != 0)" ( (binary_expression "DAT_002b4cc0 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }" { (expression_statement "plVar3 = DAT_002b4cc8;" (assignment_expression "plVar3 = DAT_002b4cc8" identifier = identifier) ;) (if_statement "if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }" if (parenthesized_expression "(DAT_002b4cc8 != (long *)0x0)" ( (binary_expression "DAT_002b4cc8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }" { (do_statement "do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);" do (compound_statement "{\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      }" { (if_statement "if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }" if (parenthesized_expression "((int)plVar3[1] == 0)" ( (binary_expression "(int)plVar3[1] == 0" (cast_expression "(int)plVar3[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar3[1]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }" { (expression_statement "bVar1 = *(byte *)(plVar3 + 0x12);" (assignment_expression "bVar1 = *(byte *)(plVar3 + 0x12)" identifier = (pointer_expression "*(byte *)(plVar3 + 0x12)" * (cast_expression "(byte *)(plVar3 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x12)" ( (binary_expression "plVar3 + 0x12" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0011cb54;" goto statement_identifier ;) })) (expression_statement "plVar3 = (long *)*plVar3;" (assignment_expression "plVar3 = (long *)*plVar3" identifier = (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) }) while (parenthesized_expression "(plVar3 != (long *)0x0)" ( (binary_expression "plVar3 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);" statement_identifier : (expression_statement "lVar4 = *(long *)(DAT_002b5f90 + 0x98);" (assignment_expression "lVar4 = *(long *)(DAT_002b5f90 + 0x98)" identifier = (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" * (cast_expression "(long *)(DAT_002b5f90 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x98)" ( (binary_expression "DAT_002b5f90 + 0x98" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_0011cbb0;" goto statement_identifier ;) })) (labeled_statement "LAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);" statement_identifier : (expression_statement "lVar4 = *(long *)(DAT_002b4cd0 + 0x38);" (assignment_expression "lVar4 = *(long *)(DAT_002b4cd0 + 0x38)" identifier = (pointer_expression "*(long *)(DAT_002b4cd0 + 0x38)" * (cast_expression "(long *)(DAT_002b4cd0 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b4cd0 + 0x38)" ( (binary_expression "DAT_002b4cd0 + 0x38" identifier + number_literal) ))))) ;)) (labeled_statement "joined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" { (do_statement "do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );" do (compound_statement "{\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    }" { (expression_statement "uVar5 = *(uint *)(lVar4 + 0x20);" (assignment_expression "uVar5 = *(uint *)(lVar4 + 0x20)" identifier = (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) ))))) ;) (if_statement "if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }" if (parenthesized_expression "((uVar5 & 0x8401) == 1)" ( (binary_expression "(uVar5 & 0x8401) == 1" (parenthesized_expression "(uVar5 & 0x8401)" ( (binary_expression "uVar5 & 0x8401" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }" { (if_statement "if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;" if (parenthesized_expression "(*(long *)(lVar4 + 0x10) == 0)" ( (binary_expression "*(long *)(lVar4 + 0x10) == 0" (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0011cbf0;" goto statement_identifier ;)) (if_statement "if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;" if (parenthesized_expression "(*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4)" ( (binary_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4" (pointer_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18)" * (cast_expression "(long *)(*(long *)(lVar4 + 0x10) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x10) + 0x18)" ( (binary_expression "*(long *)(lVar4 + 0x10) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) + number_literal) )))) == identifier) )) (goto_statement "goto LAB_0011cae0;" goto statement_identifier ;)) })) (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" identifier = (pointer_expression "*(long *)(lVar4 + 0x18)" * (cast_expression "(long *)(lVar4 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) break;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "lVar4 = *(long *)(DAT_002b5f90 + 0x90);" (assignment_expression "lVar4 = *(long *)(DAT_002b5f90 + 0x90)" identifier = (pointer_expression "*(long *)(DAT_002b5f90 + 0x90)" * (cast_expression "(long *)(DAT_002b5f90 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x90)" ( (binary_expression "DAT_002b5f90 + 0x90" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n    return 0x2b46b0;\n  }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0x2b46b0;\n  }" { (return_statement "return 0x2b46b0;" return number_literal ;) })) (expression_statement "uVar5 = *(uint *)(lVar4 + 0x20);" (assignment_expression "uVar5 = *(uint *)(lVar4 + 0x20)" identifier = (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) ))))) ;) (labeled_statement "LAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }" statement_identifier : (if_statement "if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }" if (parenthesized_expression "((uVar5 & 0x401) == 1)" ( (binary_expression "(uVar5 & 0x401) == 1" (parenthesized_expression "(uVar5 & 0x401)" ( (binary_expression "uVar5 & 0x401" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return lVar4;\n  }" { (return_statement "return lVar4;" return identifier ;) }))) (do_statement "do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);" do (compound_statement "{\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  }" { (expression_statement "lVar4 = *(long *)(lVar4 + 0x10);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x10)" identifier = (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0x2b46b0;\n    }" { (return_statement "return 0x2b46b0;" return number_literal ;) })) }) while (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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) )) ;) (return_statement "return lVar4;" return identifier ;) (labeled_statement "joined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;" statement_identifier : (if_statement "if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;" if (parenthesized_expression "((bVar1 & 0x20) != 0)" ( (binary_expression "(bVar1 & 0x20) != 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0011cc48;" goto statement_identifier ;))) (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" identifier = (subscript_expression "plVar3[7]" identifier [ number_literal ])) ;) (if_statement "if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }" if (parenthesized_expression "((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0))" ( (binary_expression "(lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)" (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(lVar4 + 0x21) & 0x80) == 0)" ( (binary_expression "(*(byte *)(lVar4 + 0x21) & 0x80) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x21) & 0x80)" ( (binary_expression "*(byte *)(lVar4 + 0x21) & 0x80" (pointer_expression "*(byte *)(lVar4 + 0x21)" * (cast_expression "(byte *)(lVar4 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x21)" ( (binary_expression "lVar4 + 0x21" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }" { (if_statement "if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" if (parenthesized_expression "(*(long *)(lVar4 + 0x10) == 0)" ( (binary_expression "*(long *)(lVar4 + 0x10) == 0" (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }" { (expression_statement "lVar2 = *(long *)(DAT_002b5f90 + 0x98);" (assignment_expression "lVar2 = *(long *)(DAT_002b5f90 + 0x98)" identifier = (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" * (cast_expression "(long *)(DAT_002b5f90 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x98)" ( (binary_expression "DAT_002b5f90 + 0x98" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" else (compound_statement "{\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" { (expression_statement "lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);" (assignment_expression "lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18)" identifier = (pointer_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18)" * (cast_expression "(long *)(*(long *)(lVar4 + 0x10) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x10) + 0x18)" ( (binary_expression "*(long *)(lVar4 + 0x10) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) }))) (if_statement "if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }" if (parenthesized_expression "(lVar4 == lVar2)" ( (binary_expression "lVar4 == lVar2" identifier == identifier) )) (compound_statement "{\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }" { (if_statement "if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" if (parenthesized_expression "(DAT_002b4cd0 == 0)" ( (binary_expression "DAT_002b4cd0 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar4 = plVar3[7];\n      }" { (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" identifier = (subscript_expression "plVar3[7]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" else (compound_statement "{\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" { (if_statement "if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;" if (parenthesized_expression "((*(byte *)(plVar3 + 0x12) & 0x20) != 0)" ( (binary_expression "(*(byte *)(plVar3 + 0x12) & 0x20) != 0" (parenthesized_expression "(*(byte *)(plVar3 + 0x12) & 0x20)" ( (binary_expression "*(byte *)(plVar3 + 0x12) & 0x20" (pointer_expression "*(byte *)(plVar3 + 0x12)" * (cast_expression "(byte *)(plVar3 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x12)" ( (binary_expression "plVar3 + 0x12" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0011caa1;" goto statement_identifier ;)) (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" identifier = (subscript_expression "plVar3[7]" identifier [ number_literal ])) ;) }))) (goto_statement "goto LAB_0011cbb0;" goto statement_identifier ;) })) })) (expression_statement "plVar3 = (long *)plVar3[4];" (assignment_expression "plVar3 = (long *)plVar3[4]" identifier = (cast_expression "(long *)plVar3[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar3[4]" identifier [ number_literal ]))) ;) (if_statement "if (plVar3 == (long *)0x0) goto LAB_0011cc37;" if (parenthesized_expression "(plVar3 == (long *)0x0)" ( (binary_expression "plVar3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0011cc37;" goto statement_identifier ;)) (expression_statement "bVar1 = *(byte *)(plVar3 + 0x12);" (assignment_expression "bVar1 = *(byte *)(plVar3 + 0x12)" identifier = (pointer_expression "*(byte *)(plVar3 + 0x12)" * (cast_expression "(byte *)(plVar3 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x12)" ( (binary_expression "plVar3 + 0x12" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0011cb54;" goto statement_identifier ;) (labeled_statement "LAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" statement_identifier : (if_statement "if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" if (parenthesized_expression "(DAT_002b4cd0 == 0)" ( (binary_expression "DAT_002b4cd0 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" { (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" identifier = (subscript_expression "plVar3[7]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" statement_identifier : (if_statement "if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0x2b46b0;\n    }" { (return_statement "return 0x2b46b0;" return number_literal ;) }))) (if_statement "if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }" if (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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) )) (compound_statement "{\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }" { (do_statement "do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);" do (compound_statement "{\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      }" { (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" identifier = (pointer_expression "*(long *)(lVar4 + 0x18)" * (cast_expression "(long *)(lVar4 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n          return 0x2b46b0;\n        }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0x2b46b0;\n        }" { (return_statement "return 0x2b46b0;" return number_literal ;) })) }) while (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" ( (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" ( (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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) )) ;) (return_statement "return lVar4;" return identifier ;) })) (return_statement "return lVar4;" return identifier ;) }))) (goto_statement "goto LAB_0011caa1;" goto statement_identifier ;) (labeled_statement "LAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;" statement_identifier : (if_statement "if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;" if (parenthesized_expression "(*(long *)(DAT_002b5f90 + 0x98) == lVar4)" ( (binary_expression "*(long *)(DAT_002b5f90 + 0x98) == lVar4" (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" * (cast_expression "(long *)(DAT_002b5f90 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x98)" ( (binary_expression "DAT_002b5f90 + 0x98" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_0011cae0;" goto statement_identifier ;))) (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" identifier = (pointer_expression "*(long *)(lVar4 + 0x18)" * (cast_expression "(long *)(lVar4 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0011caa8;" goto statement_identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) 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) ))))) ;)) (goto_statement goto statement_identifier ;) })) (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) ))))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == IDENT) )) (goto_statement goto 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (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 { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) }))) (do_statement do (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 { (return_statement return LIT ;) })) }) while (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) )) ;) (return_statement return IDENT ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (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) ))))) ;) }) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) }))) (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 { (do_statement do (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 { (return_statement return LIT ;) })) }) while (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) )) ;) (return_statement return IDENT ;) })) (return_statement return IDENT ;) }))) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (goto_statement goto 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) ))))) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "long FUN_0011ca80(void)\n\n{\n  byte bVar1;\n  long lVar2;\n  long *plVar3;\n  long lVar4;\n  uint uVar5;\n  \n  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);\njoined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }\n  lVar4 = *(long *)(DAT_002b5f90 + 0x90);\n  if (lVar4 == 0) {\n    return 0x2b46b0;\n  }\n  uVar5 = *(uint *)(lVar4 + 0x20);\nLAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }\n  do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n  return lVar4;\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  lVar4 = plVar3[7];\n  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = (long *)plVar3[4];\n  if (plVar3 == (long *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)(plVar3 + 0x12);\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;\n  lVar4 = *(long *)(lVar4 + 0x18);\n  goto joined_r0x0011caa8;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_0011ca80(void)" (identifier "FUN_0011ca80") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  long *plVar3;\n  long lVar4;\n  uint uVar5;\n  \n  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }\nLAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);\njoined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }\n  lVar4 = *(long *)(DAT_002b5f90 + 0x90);\n  if (lVar4 == 0) {\n    return 0x2b46b0;\n  }\n  uVar5 = *(uint *)(lVar4 + 0x20);\nLAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }\n  do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n  return lVar4;\njoined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;\n  lVar4 = plVar3[7];\n  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }\n  plVar3 = (long *)plVar3[4];\n  if (plVar3 == (long *)0x0) goto LAB_0011cc37;\n  bVar1 = *(byte *)(plVar3 + 0x12);\n  goto joined_r0x0011cb54;\nLAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }\n  goto LAB_0011caa1;\nLAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;\n  lVar4 = *(long *)(lVar4 + 0x18);\n  goto joined_r0x0011caa8;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (if_statement "if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }" (if "if") (parenthesized_expression "((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0))" (( "(") (binary_expression "(DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)" (parenthesized_expression "(DAT_002b4cd0 == 0)" (( "(") (binary_expression "DAT_002b4cd0 == 0" (identifier "DAT_002b4cd0") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(DAT_002b4cc0 != 0)" (( "(") (binary_expression "DAT_002b4cc0 != 0" (identifier "DAT_002b4cc0") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    plVar3 = DAT_002b4cc8;\n    if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }\nLAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);\n    goto LAB_0011cbb0;\n  }" ({ "{") (expression_statement "plVar3 = DAT_002b4cc8;" (assignment_expression "plVar3 = DAT_002b4cc8" (identifier "plVar3") (= "=") (identifier "DAT_002b4cc8")) (; ";")) (if_statement "if (DAT_002b4cc8 != (long *)0x0) {\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }" (if "if") (parenthesized_expression "(DAT_002b4cc8 != (long *)0x0)" (( "(") (binary_expression "DAT_002b4cc8 != (long *)0x0" (identifier "DAT_002b4cc8") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);\n    }" ({ "{") (do_statement "do {\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      } while (plVar3 != (long *)0x0);" (do "do") (compound_statement "{\n        if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }\n        plVar3 = (long *)*plVar3;\n      }" ({ "{") (if_statement "if ((int)plVar3[1] == 0) {\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }" (if "if") (parenthesized_expression "((int)plVar3[1] == 0)" (( "(") (binary_expression "(int)plVar3[1] == 0" (cast_expression "(int)plVar3[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar3[1]" (identifier "plVar3") ([ "[") (number_literal "1") (] "]"))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          bVar1 = *(byte *)(plVar3 + 0x12);\n          goto joined_r0x0011cb54;\n        }" ({ "{") (expression_statement "bVar1 = *(byte *)(plVar3 + 0x12);" (assignment_expression "bVar1 = *(byte *)(plVar3 + 0x12)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(plVar3 + 0x12)" (* "*") (cast_expression "(byte *)(plVar3 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 0x12)" (( "(") (binary_expression "plVar3 + 0x12" (identifier "plVar3") (+ "+") (number_literal "0x12")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0011cb54;" (goto "goto") (statement_identifier "joined_r0x0011cb54") (; ";")) (} "}"))) (expression_statement "plVar3 = (long *)*plVar3;" (assignment_expression "plVar3 = (long *)*plVar3" (identifier "plVar3") (= "=") (cast_expression "(long *)*plVar3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar3" (* "*") (identifier "plVar3")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar3 != (long *)0x0)" (( "(") (binary_expression "plVar3 != (long *)0x0" (identifier "plVar3") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0011cc37:\n    lVar4 = *(long *)(DAT_002b5f90 + 0x98);" (statement_identifier "LAB_0011cc37") (: ":") (expression_statement "lVar4 = *(long *)(DAT_002b5f90 + 0x98);" (assignment_expression "lVar4 = *(long *)(DAT_002b5f90 + 0x98)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" (* "*") (cast_expression "(long *)(DAT_002b5f90 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5f90 + 0x98)" (( "(") (binary_expression "DAT_002b5f90 + 0x98" (identifier "DAT_002b5f90") (+ "+") (number_literal "0x98")) () ")"))))) (; ";"))) (goto_statement "goto LAB_0011cbb0;" (goto "goto") (statement_identifier "LAB_0011cbb0") (; ";")) (} "}"))) (labeled_statement "LAB_0011caa1:\n  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);" (statement_identifier "LAB_0011caa1") (: ":") (expression_statement "lVar4 = *(long *)(DAT_002b4cd0 + 0x38);" (assignment_expression "lVar4 = *(long *)(DAT_002b4cd0 + 0x38)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(DAT_002b4cd0 + 0x38)" (* "*") (cast_expression "(long *)(DAT_002b4cd0 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b4cd0 + 0x38)" (( "(") (binary_expression "DAT_002b4cd0 + 0x38" (identifier "DAT_002b4cd0") (+ "+") (number_literal "0x38")) () ")"))))) (; ";"))) (labeled_statement "joined_r0x0011caa8:\n  if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" (statement_identifier "joined_r0x0011caa8") (: ":") (if_statement "if (lVar4 != 0) {\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );\n  }" ({ "{") (do_statement "do {\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    } while( true );" (do "do") (compound_statement "{\n      uVar5 = *(uint *)(lVar4 + 0x20);\n      if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }\n      lVar4 = *(long *)(lVar4 + 0x18);\n      if (lVar4 == 0) break;\n    }" ({ "{") (expression_statement "uVar5 = *(uint *)(lVar4 + 0x20);" (assignment_expression "uVar5 = *(uint *)(lVar4 + 0x20)" (identifier "uVar5") (= "=") (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")) () ")"))))) (; ";")) (if_statement "if ((uVar5 & 0x8401) == 1) {\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }" (if "if") (parenthesized_expression "((uVar5 & 0x8401) == 1)" (( "(") (binary_expression "(uVar5 & 0x8401) == 1" (parenthesized_expression "(uVar5 & 0x8401)" (( "(") (binary_expression "uVar5 & 0x8401" (identifier "uVar5") (& "&") (number_literal "0x8401")) () ")")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;\n        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;\n      }" ({ "{") (if_statement "if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;" (if "if") (parenthesized_expression "(*(long *)(lVar4 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(lVar4 + 0x10) == 0" (pointer_expression "*(long *)(lVar4 + 0x10)" (* "*") (cast_expression "(long *)(lVar4 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011cbf0;" (goto "goto") (statement_identifier "LAB_0011cbf0") (; ";"))) (if_statement "if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;" (if "if") (parenthesized_expression "(*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4)" (( "(") (binary_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4" (pointer_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18)" (* "*") (cast_expression "(long *)(*(long *)(lVar4 + 0x10) + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar4 + 0x10) + 0x18)" (( "(") (binary_expression "*(long *)(lVar4 + 0x10) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x10)" (* "*") (cast_expression "(long *)(lVar4 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "lVar4")) () ")")) (goto_statement "goto LAB_0011cae0;" (goto "goto") (statement_identifier "LAB_0011cae0") (; ";"))) (} "}"))) (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar4 + 0x18)" (* "*") (cast_expression "(long *)(lVar4 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (lVar4 == 0) break;" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (expression_statement "lVar4 = *(long *)(DAT_002b5f90 + 0x90);" (assignment_expression "lVar4 = *(long *)(DAT_002b5f90 + 0x90)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(DAT_002b5f90 + 0x90)" (* "*") (cast_expression "(long *)(DAT_002b5f90 + 0x90)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5f90 + 0x90)" (( "(") (binary_expression "DAT_002b5f90 + 0x90" (identifier "DAT_002b5f90") (+ "+") (number_literal "0x90")) () ")"))))) (; ";")) (if_statement "if (lVar4 == 0) {\n    return 0x2b46b0;\n  }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0x2b46b0;\n  }" ({ "{") (return_statement "return 0x2b46b0;" (return "return") (number_literal "0x2b46b0") (; ";")) (} "}"))) (expression_statement "uVar5 = *(uint *)(lVar4 + 0x20);" (assignment_expression "uVar5 = *(uint *)(lVar4 + 0x20)" (identifier "uVar5") (= "=") (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")) () ")"))))) (; ";")) (labeled_statement "LAB_0011cae0:\n  if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }" (statement_identifier "LAB_0011cae0") (: ":") (if_statement "if ((uVar5 & 0x401) == 1) {\n    return lVar4;\n  }" (if "if") (parenthesized_expression "((uVar5 & 0x401) == 1)" (( "(") (binary_expression "(uVar5 & 0x401) == 1" (parenthesized_expression "(uVar5 & 0x401)" (( "(") (binary_expression "uVar5 & 0x401" (identifier "uVar5") (& "&") (number_literal "0x401")) () ")")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    return lVar4;\n  }" ({ "{") (return_statement "return lVar4;" (return "return") (identifier "lVar4") (; ";")) (} "}")))) (do_statement "do {\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);" (do "do") (compound_statement "{\n    lVar4 = *(long *)(lVar4 + 0x10);\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n  }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar4 + 0x10);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x10)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar4 + 0x10)" (* "*") (cast_expression "(long *)(lVar4 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0x2b46b0;\n    }" ({ "{") (return_statement "return 0x2b46b0;" (return "return") (number_literal "0x2b46b0") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" (( "(") (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" (( "(") (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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 "0x401")) () ")")) (!= "!=") (number_literal "1")) () ")")) (; ";")) (return_statement "return lVar4;" (return "return") (identifier "lVar4") (; ";")) (labeled_statement "joined_r0x0011cb54:\n  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;" (statement_identifier "joined_r0x0011cb54") (: ":") (if_statement "if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;" (if "if") (parenthesized_expression "((bVar1 & 0x20) != 0)" (( "(") (binary_expression "(bVar1 & 0x20) != 0" (parenthesized_expression "(bVar1 & 0x20)" (( "(") (binary_expression "bVar1 & 0x20" (identifier "bVar1") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011cc48;" (goto "goto") (statement_identifier "LAB_0011cc48") (; ";")))) (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" (identifier "lVar4") (= "=") (subscript_expression "plVar3[7]" (identifier "plVar3") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }" (if "if") (parenthesized_expression "((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0))" (( "(") (binary_expression "(lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)" (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(lVar4 + 0x21) & 0x80) == 0)" (( "(") (binary_expression "(*(byte *)(lVar4 + 0x21) & 0x80) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x21) & 0x80)" (( "(") (binary_expression "*(byte *)(lVar4 + 0x21) & 0x80" (pointer_expression "*(byte *)(lVar4 + 0x21)" (* "*") (cast_expression "(byte *)(lVar4 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x21)" (( "(") (binary_expression "lVar4 + 0x21" (identifier "lVar4") (+ "+") (number_literal "0x21")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }\n    if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }\n  }" ({ "{") (if_statement "if (*(long *)(lVar4 + 0x10) == 0) {\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }\n    else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" (if "if") (parenthesized_expression "(*(long *)(lVar4 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(lVar4 + 0x10) == 0" (pointer_expression "*(long *)(lVar4 + 0x10)" (* "*") (cast_expression "(long *)(lVar4 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      lVar2 = *(long *)(DAT_002b5f90 + 0x98);\n    }" ({ "{") (expression_statement "lVar2 = *(long *)(DAT_002b5f90 + 0x98);" (assignment_expression "lVar2 = *(long *)(DAT_002b5f90 + 0x98)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" (* "*") (cast_expression "(long *)(DAT_002b5f90 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5f90 + 0x98)" (( "(") (binary_expression "DAT_002b5f90 + 0x98" (identifier "DAT_002b5f90") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" (else "else") (compound_statement "{\n      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);\n    }" ({ "{") (expression_statement "lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);" (assignment_expression "lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(*(long *)(lVar4 + 0x10) + 0x18)" (* "*") (cast_expression "(long *)(*(long *)(lVar4 + 0x10) + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar4 + 0x10) + 0x18)" (( "(") (binary_expression "*(long *)(lVar4 + 0x10) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x10)" (* "*") (cast_expression "(long *)(lVar4 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (lVar4 == lVar2) {\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }" (if "if") (parenthesized_expression "(lVar4 == lVar2)" (( "(") (binary_expression "lVar4 == lVar2" (identifier "lVar4") (== "==") (identifier "lVar2")) () ")")) (compound_statement "{\n      if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }\n      goto LAB_0011cbb0;\n    }" ({ "{") (if_statement "if (DAT_002b4cd0 == 0) {\n        lVar4 = plVar3[7];\n      }\n      else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" (if "if") (parenthesized_expression "(DAT_002b4cd0 == 0)" (( "(") (binary_expression "DAT_002b4cd0 == 0" (identifier "DAT_002b4cd0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        lVar4 = plVar3[7];\n      }" ({ "{") (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" (identifier "lVar4") (= "=") (subscript_expression "plVar3[7]" (identifier "plVar3") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" (else "else") (compound_statement "{\n        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;\n        lVar4 = plVar3[7];\n      }" ({ "{") (if_statement "if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;" (if "if") (parenthesized_expression "((*(byte *)(plVar3 + 0x12) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(plVar3 + 0x12) & 0x20) != 0" (parenthesized_expression "(*(byte *)(plVar3 + 0x12) & 0x20)" (( "(") (binary_expression "*(byte *)(plVar3 + 0x12) & 0x20" (pointer_expression "*(byte *)(plVar3 + 0x12)" (* "*") (cast_expression "(byte *)(plVar3 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 0x12)" (( "(") (binary_expression "plVar3 + 0x12" (identifier "plVar3") (+ "+") (number_literal "0x12")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011caa1;" (goto "goto") (statement_identifier "LAB_0011caa1") (; ";"))) (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" (identifier "lVar4") (= "=") (subscript_expression "plVar3[7]" (identifier "plVar3") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}")))) (goto_statement "goto LAB_0011cbb0;" (goto "goto") (statement_identifier "LAB_0011cbb0") (; ";")) (} "}"))) (} "}"))) (expression_statement "plVar3 = (long *)plVar3[4];" (assignment_expression "plVar3 = (long *)plVar3[4]" (identifier "plVar3") (= "=") (cast_expression "(long *)plVar3[4]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar3[4]" (identifier "plVar3") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (plVar3 == (long *)0x0) goto LAB_0011cc37;" (if "if") (parenthesized_expression "(plVar3 == (long *)0x0)" (( "(") (binary_expression "plVar3 == (long *)0x0" (identifier "plVar3") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0011cc37;" (goto "goto") (statement_identifier "LAB_0011cc37") (; ";"))) (expression_statement "bVar1 = *(byte *)(plVar3 + 0x12);" (assignment_expression "bVar1 = *(byte *)(plVar3 + 0x12)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(plVar3 + 0x12)" (* "*") (cast_expression "(byte *)(plVar3 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 0x12)" (( "(") (binary_expression "plVar3 + 0x12" (identifier "plVar3") (+ "+") (number_literal "0x12")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0011cb54;" (goto "goto") (statement_identifier "joined_r0x0011cb54") (; ";")) (labeled_statement "LAB_0011cc48:\n  if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" (statement_identifier "LAB_0011cc48") (: ":") (if_statement "if (DAT_002b4cd0 == 0) {\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" (if "if") (parenthesized_expression "(DAT_002b4cd0 == 0)" (( "(") (binary_expression "DAT_002b4cd0 == 0" (identifier "DAT_002b4cd0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    lVar4 = plVar3[7];\nLAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }\n    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }\n    return lVar4;\n  }" ({ "{") (expression_statement "lVar4 = plVar3[7];" (assignment_expression "lVar4 = plVar3[7]" (identifier "lVar4") (= "=") (subscript_expression "plVar3[7]" (identifier "plVar3") ([ "[") (number_literal "7") (] "]"))) (; ";")) (labeled_statement "LAB_0011cbb0:\n    if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" (statement_identifier "LAB_0011cbb0") (: ":") (if_statement "if (lVar4 == 0) {\n      return 0x2b46b0;\n    }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0x2b46b0;\n    }" ({ "{") (return_statement "return 0x2b46b0;" (return "return") (number_literal "0x2b46b0") (; ";")) (} "}")))) (if_statement "if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }" (if "if") (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" (( "(") (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" (( "(") (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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 "0x401")) () ")")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);\n      return lVar4;\n    }" ({ "{") (do_statement "do {\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);" (do "do") (compound_statement "{\n        lVar4 = *(long *)(lVar4 + 0x18);\n        if (lVar4 == 0) {\n          return 0x2b46b0;\n        }\n      }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar4 + 0x18)" (* "*") (cast_expression "(long *)(lVar4 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (lVar4 == 0) {\n          return 0x2b46b0;\n        }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return 0x2b46b0;\n        }" ({ "{") (return_statement "return 0x2b46b0;" (return "return") (number_literal "0x2b46b0") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((*(uint *)(lVar4 + 0x20) & 0x401) != 1)" (( "(") (binary_expression "(*(uint *)(lVar4 + 0x20) & 0x401) != 1" (parenthesized_expression "(*(uint *)(lVar4 + 0x20) & 0x401)" (( "(") (binary_expression "*(uint *)(lVar4 + 0x20) & 0x401" (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 "0x401")) () ")")) (!= "!=") (number_literal "1")) () ")")) (; ";")) (return_statement "return lVar4;" (return "return") (identifier "lVar4") (; ";")) (} "}"))) (return_statement "return lVar4;" (return "return") (identifier "lVar4") (; ";")) (} "}")))) (goto_statement "goto LAB_0011caa1;" (goto "goto") (statement_identifier "LAB_0011caa1") (; ";")) (labeled_statement "LAB_0011cbf0:\n  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;" (statement_identifier "LAB_0011cbf0") (: ":") (if_statement "if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;" (if "if") (parenthesized_expression "(*(long *)(DAT_002b5f90 + 0x98) == lVar4)" (( "(") (binary_expression "*(long *)(DAT_002b5f90 + 0x98) == lVar4" (pointer_expression "*(long *)(DAT_002b5f90 + 0x98)" (* "*") (cast_expression "(long *)(DAT_002b5f90 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5f90 + 0x98)" (( "(") (binary_expression "DAT_002b5f90 + 0x98" (identifier "DAT_002b5f90") (+ "+") (number_literal "0x98")) () ")")))) (== "==") (identifier "lVar4")) () ")")) (goto_statement "goto LAB_0011cae0;" (goto "goto") (statement_identifier "LAB_0011cae0") (; ";")))) (expression_statement "lVar4 = *(long *)(lVar4 + 0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x18)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar4 + 0x18)" (* "*") (cast_expression "(long *)(lVar4 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0011caa8;" (goto "goto") (statement_identifier "joined_r0x0011caa8") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

type_1 * function_1(void)

{
  type_2 var_9;
  type_3 *var_10;
  type_4 *var_5;
  type_3 *var_6;
  type_5 var_7;
  
  if ((var_1 == (type_6 *)0x0) || (var_2 != 0))
  {
    var_5 = (type_4 *)var_3;
    if (var_3 != (type_7 *)0x0) {
      do {
        if ((var_5->wild_statement).header.type == var_4) {
          var_9 = *(type_2 *)&(&var_5->assignment_statement)[6].header.next;
          goto joined_r0x0011cb54;
        }
        var_5 = (var_5->wild_statement).header.next;
      } while (var_5 != (type_4 *)0x0);
    }
LAB_0011cc37:
    var_6 = (link_info.output_bfd)->section_last;
    goto LAB_0011cbb0;
  }
LAB_0011caa1:
  var_6 = var_1->type_3;
joined_r0x0011caa8:
  if (var_6 != (type_1 *)0x0) {
    do {
      var_7 = var_6->flags;
      if ((var_7 & 0x8401) == 1) {
        if (var_6->next == (type_3 *)0x0) goto LAB_0011cbf0;
        if (var_6->next->prev == var_6) goto LAB_0011cae0;
      }
      var_6 = var_6->prev;
      if (var_6 == (type_3 *)0x0) break;
    } while( true );
  }
  var_6 = (link_info.output_bfd)->sections;
  if (var_6 == (type_3 *)0x0) goto LAB_0011cb0b;
  var_7 = var_6->flags;
LAB_0011cae0:
  if ((var_7 & 0x401) == 1) {
    return var_6;
  }
  while( true ) {
    var_6 = var_6->next;
    if (var_6 == (type_3 *)0x0) break;
    if ((var_6->flags & 0x401) == 1) {
      return var_6;
    }
  }
LAB_0011cb0b:
  return (type_1 *)(var_8 + 0x230);
joined_r0x0011cb54:
  if ((var_9 & 0x20) != 0) goto LAB_0011cc48;
  var_6 = *(type_3 **)&(&var_5->assignment_statement)[2].header.type;
  if ((var_6 != (type_3 *)0x0) && ((var_6->flags & 0x8000) == 0)) {
    if (var_6->next == (type_3 *)0x0) {
      var_10 = (link_info.output_bfd)->section_last;
    }
    else {
      var_10 = var_6->next->prev;
    }
    if (var_6 == var_10) {
      if (var_1 == (type_6 *)0x0) {
        var_6 = *(type_3 **)&(&var_5->assignment_statement)[2].header.type;
      }
      else {
        if (((ulong)(&var_5->assignment_statement)[6].header.next & 0x20) != 0) goto LAB_0011caa1;
        var_6 = *(type_3 **)&(&var_5->assignment_statement)[2].header.type;
      }
      goto LAB_0011cbb0;
    }
  }
  var_5 = *(type_4 **)&(&var_5->assignment_statement)[1].header.type;
  if (var_5 == (type_4 *)0x0) goto LAB_0011cc37;
  var_9 = *(type_2 *)&(&var_5->assignment_statement)[6].header.next;
  goto joined_r0x0011cb54;
LAB_0011cc48:
  if (var_1 == (type_6 *)0x0) {
    var_6 = *(type_3 **)&(&var_5->assignment_statement)[2].header.type;
LAB_0011cbb0:
    if (var_6 != (type_1 *)0x0) {
      if ((var_6->flags & 0x401) == 1) {
        return var_6;
      }
      while( true ) {
        var_6 = var_6->prev;
        if (var_6 == (type_3 *)0x0) break;
        if ((var_6->flags & 0x401) == 1) {
          return var_6;
        }
      }
    }
    goto LAB_0011cb0b;
  }
  goto LAB_0011caa1;
LAB_0011cbf0:
  if ((link_info.output_bfd)->section_last == var_6) goto LAB_0011cae0;
  var_6 = var_6->prev;
  goto joined_r0x0011caa8;
}


(translation_unit (function_definition type: (sized_type_specifier) 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: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (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)))))))) (goto_statement label: (statement_identifier)))) (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)))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (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))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (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: (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: (identifier))) consequence: (goto_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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement))) condition: (parenthesized_expression (true)))))) (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 (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (identifier))))) (do_statement body: (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 (return_statement (number_literal))))) 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)))) (return_statement (identifier)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (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))) 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: (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)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))) (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 (do_statement body: (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 (return_statement (number_literal))))) 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)))) (return_statement (identifier)))) (return_statement (identifier))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (if_statement condition: (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: (identifier))) consequence: (goto_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))))))) (goto_statement label: (statement_identifier)))))

long MASKED(void)

{
  byte bVar1;
  long lVar2;
  long *plVar3;
  long lVar4;
  uint uVar5;
  
  if ((DAT_002b4cd0 == 0) || (DAT_002b4cc0 != 0)) {
    plVar3 = DAT_002b4cc8;
    if (DAT_002b4cc8 != (long *)0x0) {
      do {
        if ((int)plVar3[1] == 0) {
          bVar1 = *(byte *)(plVar3 + 0x12);
          goto joined_r0x0011cb54;
        }
        plVar3 = (long *)*plVar3;
      } while (plVar3 != (long *)0x0);
    }
LAB_0011cc37:
    lVar4 = *(long *)(DAT_002b5f90 + 0x98);
    goto LAB_0011cbb0;
  }
LAB_0011caa1:
  lVar4 = *(long *)(DAT_002b4cd0 + 0x38);
joined_r0x0011caa8:
  if (lVar4 != 0) {
    do {
      uVar5 = *(uint *)(lVar4 + 0x20);
      if ((uVar5 & 0x8401) == 1) {
        if (*(long *)(lVar4 + 0x10) == 0) goto LAB_0011cbf0;
        if (*(long *)(*(long *)(lVar4 + 0x10) + 0x18) == lVar4) goto LAB_0011cae0;
      }
      lVar4 = *(long *)(lVar4 + 0x18);
      if (lVar4 == 0) break;
    } while( true );
  }
  lVar4 = *(long *)(DAT_002b5f90 + 0x90);
  if (lVar4 == 0) {
    return 0x2b46b0;
  }
  uVar5 = *(uint *)(lVar4 + 0x20);
LAB_0011cae0:
  if ((uVar5 & 0x401) == 1) {
    return lVar4;
  }
  do {
    lVar4 = *(long *)(lVar4 + 0x10);
    if (lVar4 == 0) {
      return 0x2b46b0;
    }
  } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);
  return lVar4;
joined_r0x0011cb54:
  if ((bVar1 & 0x20) != 0) goto LAB_0011cc48;
  lVar4 = plVar3[7];
  if ((lVar4 != 0) && ((*(byte *)(lVar4 + 0x21) & 0x80) == 0)) {
    if (*(long *)(lVar4 + 0x10) == 0) {
      lVar2 = *(long *)(DAT_002b5f90 + 0x98);
    }
    else {
      lVar2 = *(long *)(*(long *)(lVar4 + 0x10) + 0x18);
    }
    if (lVar4 == lVar2) {
      if (DAT_002b4cd0 == 0) {
        lVar4 = plVar3[7];
      }
      else {
        if ((*(byte *)(plVar3 + 0x12) & 0x20) != 0) goto LAB_0011caa1;
        lVar4 = plVar3[7];
      }
      goto LAB_0011cbb0;
    }
  }
  plVar3 = (long *)plVar3[4];
  if (plVar3 == (long *)0x0) goto LAB_0011cc37;
  bVar1 = *(byte *)(plVar3 + 0x12);
  goto joined_r0x0011cb54;
LAB_0011cc48:
  if (DAT_002b4cd0 == 0) {
    lVar4 = plVar3[7];
LAB_0011cbb0:
    if (lVar4 == 0) {
      return 0x2b46b0;
    }
    if ((*(uint *)(lVar4 + 0x20) & 0x401) != 1) {
      do {
        lVar4 = *(long *)(lVar4 + 0x18);
        if (lVar4 == 0) {
          return 0x2b46b0;
        }
      } while ((*(uint *)(lVar4 + 0x20) & 0x401) != 1);
      return lVar4;
    }
    return lVar4;
  }
  goto LAB_0011caa1;
LAB_0011cbf0:
  if (*(long *)(DAT_002b5f90 + 0x98) == lVar4) goto LAB_0011cae0;
  lVar4 = *(long *)(lVar4 + 0x18);
  goto joined_r0x0011caa8;
}

