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

char * __regparm3 dlang_identifier(string *decl,char *mangled,dlang_symbol_kinds kind)

{
  char cVar1;
  size_t sVar2;
  byte *pbVar3;
  char *pcVar4;
  int iVar5;
  char *pcVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  int iVar10;
  bool bVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  string *in_stack_ffffffb4;
  char *in_stack_ffffffb8;
  uint n;
  dlang_symbol_kinds kind_00;
  byte *local_3c;
  long len;
  string name;
  
  bVar14 = 0;
  local_3c = (byte *)dlang_number(mangled,&len);
  if ((local_3c == (byte *)0x0) || (len == 0)) {
LAB_0017d320:
    local_3c = (byte *)0x0;
  }
  else {
    if (kind == dlang_template_param) {
      iVar10 = 0;
      if (decl->b != decl->p) {
        iVar10 = (int)decl->p - (int)decl->b;
      }
      pbVar3 = local_3c;
      kind_00 = len;
LAB_0017d3b0:
      pbVar7 = pbVar3;
      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;
      pbVar3 = pbVar7;
      if (!bVar11) goto LAB_0017d46d;
LAB_0017d3c2:
      bVar13 = false;
      iVar5 = 2;
      pbVar8 = pbVar3;
      pbVar9 = &DAT_00239751;
      do {
        if (iVar5 == 0) break;
        iVar5 = iVar5 + -1;
        bVar13 = *pbVar8 < *pbVar9;
        bVar11 = *pbVar8 == *pbVar9;
        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;
        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;
      } while (bVar11);
      if ((!bVar13 && !bVar11) == bVar13) {
        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);
        goto LAB_0017d47f;
      }
      do {
        pbVar8 = pbVar7;
        if ((int)pbVar3 - (int)pbVar7 == kind_00) {
          return (char *)pbVar3;
        }
        do {
          pbVar7 = local_3c;
          kind_00 = (int)kind_00 / 10;
          pcVar4 = decl->b;
          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);
          if (decl->p == pcVar4) {
            iVar5 = iVar10;
          }
          if (iVar5 < 0) {
            decl->p = pcVar4 + iVar10;
          }
          pbVar3 = pbVar8 + -1;
          if (local_3c == (byte *)0x0) goto LAB_0017d320;
          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;
          local_3c = (byte *)0x0;
          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;
          kind_00 = len;
          if (bVar11) goto LAB_0017d3c2;
LAB_0017d46d:
          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);
LAB_0017d47f:
          pbVar8 = pbVar7;
        } while (pbVar3 == (byte *)0x0);
      } while( true );
    }
    n = len;
    sVar2 = strlen((char *)local_3c);
    if (sVar2 < n) goto LAB_0017d320;
    if ((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&
       ((byte)(local_3c[2] + 0xac) < 2)) {
      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {
        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);
        string_append(decl,"!(");
        if (pcVar4 == (char *)0x0) {
LAB_0017d304:
          string_append(decl,")");
        }
        else {
          cVar1 = *pcVar4;
          if (cVar1 == '\0') {
LAB_0017d80a:
            string_append(decl,")");
          }
          else {
            if (cVar1 != 'Z') {
              iVar10 = 1;
              while( true ) {
                if (cVar1 == 'H') {
                  cVar1 = pcVar4[1];
                  pcVar4 = pcVar4 + 1;
                }
                if (cVar1 == 'T') {
                  pcVar4 = dlang_type(decl,pcVar4 + 1);
                }
                else if (cVar1 == 'V') {
                  cVar1 = pcVar4[1];
                  name.e = (char *)0x0;
                  name.p = (char *)0x0;
                  name.b = (char *)0x0;
                  pcVar4 = dlang_type(&name,pcVar4 + 1);
                  string_need(&name,1);
                  *name.p = '\0';
                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);
                  if (name.b != (char *)0x0) {
                    free(name.b);
                  }
                }
                else {
                  if (cVar1 != 'S') {
                    pcVar4 = (char *)0x0;
                    goto LAB_0017d55b;
                  }
                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);
                }
                if (pcVar4 == (char *)0x0) goto LAB_0017d304;
                cVar1 = *pcVar4;
                if (cVar1 == '\0') goto LAB_0017d80a;
                if (cVar1 == 'Z') break;
                if (iVar10 != 0) {
                  string_append(decl,", ");
                  cVar1 = *pcVar4;
                }
                iVar10 = iVar10 + 1;
              }
            }
            pcVar4 = pcVar4 + 1;
LAB_0017d55b:
            string_append(decl,")");
            if (pcVar4 == (char *)0x0) goto LAB_0017d320;
          }
          if (n == (int)pcVar4 - (int)local_3c) {
            return pcVar4;
          }
        }
      }
      goto LAB_0017d320;
    }
    if (6 < n - 6) goto _L493;
    bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6];
    bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000;
    switch(n) {
    case 6:
      iVar10 = 6;
      pbVar3 = local_3c;
      pbVar7 = (byte *)"__ctor";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar11 = *pbVar3 < *pbVar7;
        bVar13 = *pbVar3 == *pbVar7;
        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;
      } while (bVar13);
      bVar12 = false;
      bVar11 = (!bVar11 && !bVar13) == bVar11;
      if (bVar11) {
        string_append(decl,"this");
        return (char *)(local_3c + len);
      }
      iVar10 = 6;
      pbVar3 = local_3c;
      pbVar7 = (byte *)"__dtor";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar12 = *pbVar3 < *pbVar7;
        bVar11 = *pbVar3 == *pbVar7;
        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;
      } while (bVar11);
      bVar13 = false;
      bVar11 = (!bVar12 && !bVar11) == bVar12;
      if (bVar11) {
        string_append(decl,"~this");
        return (char *)(local_3c + len);
      }
      iVar10 = 7;
      pbVar3 = local_3c;
      pbVar7 = (byte *)"__initZ";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar13 = *pbVar3 < *pbVar7;
        bVar11 = *pbVar3 == *pbVar7;
        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;
      } while (bVar11);
      bVar12 = false;
      bVar11 = (!bVar13 && !bVar11) == bVar13;
      if (bVar11) {
        pcVar4 = "initializer for ";
      }
      else {
        iVar10 = 7;
        pbVar3 = local_3c;
        pbVar7 = (byte *)"__vtblZ";
        do {
          if (iVar10 == 0) break;
          iVar10 = iVar10 + -1;
          bVar12 = *pbVar3 < *pbVar7;
          bVar11 = *pbVar3 == *pbVar7;
          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;
          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;
        } while (bVar11);
        if ((!bVar12 && !bVar11) != bVar12) goto _L493;
        pcVar4 = "vtable for ";
      }
      break;
    case 7:
      iVar10 = 8;
      pbVar3 = local_3c;
      pbVar7 = (byte *)"__ClassZ";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar11 = *pbVar3 < *pbVar7;
        bVar13 = *pbVar3 == *pbVar7;
        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;
      } while (bVar13);
      if ((!bVar11 && !bVar13) != bVar11) goto _L493;
      pcVar4 = "ClassInfo for ";
      break;
    case 10:
      iVar10 = 0xd;
      pbVar3 = local_3c;
      pbVar7 = (byte *)"__postblitMFZ";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar11 = *pbVar3 < *pbVar7;
        bVar13 = *pbVar3 == *pbVar7;
        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;
      } while (bVar13);
      if ((!bVar11 && !bVar13) == bVar11) {
        string_append(decl,"this(this)");
        return (char *)(local_3c + len + 3);
      }
    default:
_L493:
      string_appendn(decl,(char *)local_3c,n);
      return (char *)(local_3c + len);
    case 0xb:
      iVar10 = 0xc;
      pbVar3 = local_3c;
      pbVar7 = (byte *)"__InterfaceZ";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar11 = *pbVar3 < *pbVar7;
        bVar13 = *pbVar3 == *pbVar7;
        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;
      } while (bVar13);
      if ((!bVar11 && !bVar13) != bVar11) goto _L493;
      pcVar4 = "Interface for ";
      break;
    case 0xc:
      iVar10 = 0xd;
      pbVar3 = local_3c;
      pbVar7 = (byte *)"__ModuleInfoZ";
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar11 = *pbVar3 < *pbVar7;
        bVar13 = *pbVar3 == *pbVar7;
        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;
      } while (bVar13);
      if ((!bVar11 && !bVar13) != bVar11) goto _L493;
      pcVar4 = "ModuleInfo for ";
    }
    string_prepend(decl,pcVar4);
    pcVar4 = decl->b;
    pcVar6 = decl->p + (-1 - (int)pcVar4);
    if (pcVar4 == decl->p) {
      pcVar6 = (char *)0xffffffff;
    }
    local_3c = local_3c + len;
    decl->p = pcVar4 + (int)pcVar6;
  }
  return (char *)local_3c;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x0017d79e) */

byte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)

{
  size_t sVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  byte *pbVar7;
  int iVar8;
  bool bVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  uint local_44;
  byte *local_3c;
  uint local_2c;
  
  bVar12 = 0;
  local_3c = (byte *)FUN_0017b740();
  if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {
LAB_0017d320:
    local_3c = (byte *)0x0;
  }
  else {
    if (param_3 == 4) {
      iVar8 = 0;
      if (*param_1 != param_1[1]) {
        iVar8 = param_1[1] - *param_1;
      }
      pbVar2 = local_3c;
LAB_0017d3b0:
      pbVar5 = pbVar2;
      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;
      pbVar2 = pbVar5;
      if (!bVar9) goto LAB_0017d46d;
LAB_0017d3c2:
      bVar11 = false;
      iVar3 = 2;
      pbVar6 = pbVar2;
      pbVar7 = &DAT_00239751;
      do {
        if (iVar3 == 0) break;
        iVar3 = iVar3 + -1;
        bVar11 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;
      } while (bVar9);
      if ((!bVar11 && !bVar9) == bVar11) {
        pbVar2 = (byte *)FUN_0017d080();
        goto LAB_0017d47f;
      }
      do {
        pbVar6 = pbVar5;
        if ((int)pbVar2 - (int)pbVar5 == local_44) {
          return pbVar2;
        }
        do {
          pbVar5 = local_3c;
          local_44 = (int)local_44 / 10;
          iVar3 = *param_1;
          iVar4 = iVar8 - (param_1[1] - iVar3);
          if (param_1[1] == iVar3) {
            iVar4 = iVar8;
          }
          if (iVar4 < 0) {
            param_1[1] = iVar3 + iVar8;
          }
          pbVar2 = pbVar6 + -1;
          if (local_3c == (byte *)0x0) goto LAB_0017d320;
          if (local_44 != 0) goto LAB_0017d3b0;
          local_44 = local_2c;
          local_3c = (byte *)0x0;
          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;
          if (bVar9) goto LAB_0017d3c2;
LAB_0017d46d:
          pbVar2 = (byte *)FUN_0017d830();
LAB_0017d47f:
          pbVar6 = pbVar5;
        } while (pbVar2 == (byte *)0x0);
      } while( true );
    }
    sVar1 = strlen((char *)local_3c);
    if (sVar1 < local_2c) goto LAB_0017d320;
    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&
       ((byte)(local_3c[2] + 0xac) < 2)) {
      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {
        pbVar2 = (byte *)FUN_0017d280();
        FUN_0017b850();
        if (pbVar2 == (byte *)0x0) {
LAB_0017d304:
          FUN_0017b850();
        }
        else {
          bVar12 = *pbVar2;
          if (bVar12 == 0) {
LAB_0017d80a:
            FUN_0017b850();
          }
          else {
            if (bVar12 != 0x5a) {
              iVar8 = 1;
              while( true ) {
                if (bVar12 == 0x48) {
                  bVar12 = pbVar2[1];
                  pbVar2 = pbVar2 + 1;
                }
                if (bVar12 == 0x54) {
                  pbVar2 = (byte *)FUN_0017c870();
                }
                else if (bVar12 == 0x56) {
                  bVar12 = pbVar2[1];
                  FUN_0017c870();
                  FUN_0017b7c0();
                  DAT_00000000 = 0;
                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);
                }
                else {
                  if (bVar12 != 0x53) {
                    pbVar2 = (byte *)0x0;
                    goto LAB_0017d55b;
                  }
                  pbVar2 = (byte *)FUN_0017d280();
                }
                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;
                bVar12 = *pbVar2;
                if (bVar12 == 0) goto LAB_0017d80a;
                if (bVar12 == 0x5a) break;
                if (iVar8 != 0) {
                  FUN_0017b850();
                  bVar12 = *pbVar2;
                }
                iVar8 = iVar8 + 1;
              }
            }
            pbVar2 = pbVar2 + 1;
LAB_0017d55b:
            FUN_0017b850();
            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;
          }
          if (local_2c == (int)pbVar2 - (int)local_3c) {
            return pbVar2;
          }
        }
      }
      goto LAB_0017d320;
    }
    if (6 < local_2c - 6) goto LAB_0017d350;
    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);
    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;
    switch(local_2c) {
    case 6:
      iVar8 = 6;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__ctor";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      bVar10 = false;
      bVar9 = (!bVar9 && !bVar11) == bVar9;
      if (bVar9) {
        FUN_0017b850();
        return local_3c + local_2c;
      }
      iVar8 = 6;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__dtor";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar10 = *pbVar2 < *pbVar5;
        bVar9 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar9);
      bVar11 = false;
      bVar9 = (!bVar10 && !bVar9) == bVar10;
      if (bVar9) {
        FUN_0017b850();
        return local_3c + local_2c;
      }
      iVar8 = 7;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__initZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar11 = *pbVar2 < *pbVar5;
        bVar9 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar9);
      bVar10 = false;
      bVar9 = (!bVar11 && !bVar9) == bVar11;
      if (!bVar9) {
        iVar8 = 7;
        pbVar2 = local_3c;
        pbVar5 = &UNK_00239781;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar10 = *pbVar2 < *pbVar5;
          bVar9 = *pbVar2 == *pbVar5;
          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
        } while (bVar9);
        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;
      }
      break;
    case 7:
      iVar8 = 8;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__ClassZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;
      break;
    case 10:
      iVar8 = 0xd;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__postblitMFZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar9 && !bVar11) == bVar9) {
        FUN_0017b850();
        return local_3c + local_2c + 3;
      }
    default:
LAB_0017d350:
      FUN_0017bbd0();
      return local_3c + local_2c;
    case 0xb:
      iVar8 = 0xc;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__InterfaceZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;
      break;
    case 0xc:
      iVar8 = 0xd;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__ModuleInfoZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;
    }
    FUN_0017bb50();
    iVar8 = *param_1;
    iVar3 = (param_1[1] - iVar8) + -1;
    if (iVar8 == param_1[1]) {
      iVar3 = -1;
    }
    local_3c = local_3c + local_2c;
    param_1[1] = iVar8 + iVar3;
  }
  return local_3c;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x184d77
SUB ESP,0x3c
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,EDX
LEA EDX,[ESP + 0x20]
MOV dword ptr [ESP + 0x18],EBX
MOV EBX,ECX
CALL 0x0017b740
TEST EAX,EAX
JZ 0x0017d320
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x8],EAX
TEST EAX,EAX
JZ 0x0017d320
CMP EBX,0x4
JZ 0x0017d370
SUB ESP,0xc
PUSH EBP
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x000265f0
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0x8]
CMP EAX,EBX
JC 0x0017d320
CMP EBX,0x4
JLE 0x0017d2e9
CMP byte ptr [EBP],0x5f
JZ 0x0017d4a8
MOV EAX,dword ptr [ESP + 0x8]
SUB EAX,0x6
CMP EAX,0x6
JA 0x0017d350
MOV EBX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [EBX + EAX*0x4 + 0xfff37b20]
ADD ECX,EBX
JMP ECX
MOV EAX,dword ptr [ESP + 0x18]
LEA EDX,[EAX + 0xfff35aff]
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x0017b850
LEA ESI,[ESI]
NOP
XOR EBP,EBP
ADD ESP,0x3c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,EBP
CALL 0x0017bbd0
ADD EBP,dword ptr [ESP + 0x20]
ADD ESP,0x3c
POP EBX
MOV EAX,EBP
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x10],EBP
MOV EBX,EBP
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
MOV ECX,EAX
SUB ECX,EDX
CMP EDX,EAX
MOV EAX,0x0
CMOVNZ EAX,ECX
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x18]
LEA ESI,[EAX + 0xfff38160]
LEA EAX,[EAX + 0xfff37751]
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x18],ESI
LEA ESI,[ESI]
MOVZX EAX,byte ptr [EBP]
MOV EDX,dword ptr [ESP + 0x18]
TEST byte ptr [EDX + EAX*0x2],0x4
JNZ 0x0017d46d
MOV EDI,dword ptr [ESP + 0x1c]
MOV ECX,0x2
MOV ESI,EBP
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0017d490
MOV EAX,EBP
SUB EAX,EBX
CMP EAX,dword ptr [ESP + 0x8]
JZ 0x0017d322
MOV EDI,dword ptr [ESP + 0x8]
MOV EAX,0x66666667
MOV ESI,dword ptr [ESP + 0xc]
IMUL EDI
MOV EAX,EDI
MOV EDI,dword ptr [ESP + 0x14]
SAR EAX,0x1f
MOV EBP,EDI
SAR EDX,0x2
SUB EDX,EAX
MOV EAX,dword ptr [ESI]
MOV ESI,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x8],EDX
MOV ECX,ESI
SUB ECX,EAX
SUB EBP,ECX
CMP ESI,EAX
MOV ECX,EBP
CMOVZ ECX,EDI
TEST ECX,ECX
JNS 0x0017d42e
MOV EDI,dword ptr [ESP + 0xc]
ADD EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EDI + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x10]
LEA EBP,[EBX + -0x1]
TEST EAX,EAX
JZ 0x0017d320
MOV EBX,EBP
TEST EDX,EDX
JNZ 0x0017d3b0
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x10],0x0
MOV dword ptr [ESP + 0x8],EAX
MOVZX EAX,byte ptr [EBP]
TEST byte ptr [EDX + EAX*0x2],0x4
JZ 0x0017d3c2
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,EBP
MOV ECX,0x3
CALL 0x0017d830
MOV EBP,EAX
TEST EBP,EBP
JZ 0x0017d3ea
JMP 0x0017d3dc
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,EBP
MOV ECX,0x1
CALL 0x0017d080
MOV EBP,EAX
JMP 0x0017d47f
CMP byte ptr [EBP + 0x1],0x5f
JNZ 0x0017d2e9
MOVZX EAX,byte ptr [EBP + 0x2]
SUB EAX,0x54
CMP AL,0x1
JA 0x0017d2e9
MOV EBX,dword ptr [ESP + 0x18]
MOVZX ECX,byte ptr [EBP + 0x3]
LEA EDX,[EBX + 0xfff38160]
TEST byte ptr [EDX + ECX*0x2],0x4
JZ 0x0017d320
CMP CL,0x30
JZ 0x0017d320
MOV EDI,dword ptr [ESP + 0xc]
LEA EDX,[EBP + 0x3]
MOV ECX,0x3
MOV EAX,EDI
CALL 0x0017d280
LEA EDX,[EBX + 0xfff376ef]
MOV ESI,EAX
MOV EAX,EDI
CALL 0x0017b850
TEST ESI,ESI
JZ 0x0017d304
MOVZX EAX,byte ptr [ESI]
TEST AL,AL
JZ 0x0017d80a
CMP AL,0x5a
JZ 0x0017d802
LEA ECX,[ESP + 0x24]
LEA EBX,[EBX + 0xfff33a7f]
MOV EDI,0x1
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0x14],EBX
CMP AL,0x48
JNZ 0x0017d541
MOVZX EAX,byte ptr [ESI + 0x1]
ADD ESI,0x1
CMP AL,0x54
JZ 0x0017d7dd
CMP AL,0x56
JZ 0x0017d73f
CMP AL,0x53
JZ 0x0017d7ed
XOR ESI,ESI
MOV EAX,dword ptr [ESP + 0x18]
LEA EDX,[EAX + 0xfff35aff]
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x0017b850
TEST ESI,ESI
JZ 0x0017d320
MOV EAX,ESI
SUB EAX,EBP
MOV EBP,ESI
CMP dword ptr [ESP + 0x8],EAX
JZ 0x0017d322
JMP 0x0017d320
MOV EAX,dword ptr [ESP + 0x10]
LEA EDX,[ESI + 0x1]
MOVSX EBX,byte ptr [ESI + 0x1]
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x28],0x0
MOV dword ptr [ESP + 0x24],0x0
CALL 0x0017c870
MOV EDX,0x1
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x0017b7c0
MOV EAX,dword ptr [ESP + 0x28]
SUB ESP,0xc
MOV EDX,ESI
MOV byte ptr [EAX],0x0
PUSH EBX
MOV ECX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x0017c110
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x34]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0017d7ae
SUB ESP,0xc
PUSH EAX
MOV EBX,dword ptr [ESP + 0x28]
CALL 0x00026410
ADD ESP,0x10
TEST ESI,ESI
JZ 0x0017d304
MOVZX EAX,byte ptr [ESI]
TEST AL,AL
JZ 0x0017d80a
CMP AL,0x5a
JZ 0x0017d802
TEST EDI,EDI
JZ 0x0017d7d5
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x14]
CALL 0x0017b850
MOVZX EAX,byte ptr [ESI]
ADD EDI,0x1
JMP 0x0017d536
MOV EAX,dword ptr [ESP + 0xc]
LEA EDX,[ESI + 0x1]
CALL 0x0017c870
MOV ESI,EAX
JMP 0x0017d7ae
MOV EAX,dword ptr [ESP + 0xc]
LEA EDX,[ESI + 0x1]
MOV ECX,0x4
CALL 0x0017d280
MOV ESI,EAX
JMP 0x0017d7ae
ADD ESI,0x1
JMP 0x0017d55b
MOV EAX,dword ptr [ESP + 0x18]
LEA EDX,[EAX + 0xfff35aff]
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x0017b850
JMP 0x0017d576
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Removing unreachable block (ram,0x0017d79e) */\n\nbyte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)\n\n{\n  size_t sVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  int iVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  uint local_44;\n  byte *local_3c;\n  uint local_2c;\n  \n  bVar12 = 0;\n  local_3c = (byte *)FUN_0017b740();\n  if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }\n  return local_3c;\n}\n\n" comment comment (ERROR "byte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" (binary_expression "byte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" identifier (argument_list "(int *param_1,undefined4 param_2,int param_3)" ( (binary_expression "int *param_1" identifier * identifier) , identifier (ERROR "param_2" identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  size_t sVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  int iVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  uint local_44;\n  byte *local_3c;\n  uint local_2c;\n  \n  bVar12 = 0;\n  local_3c = (byte *)FUN_0017b740();\n  if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }\n  return local_3c;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "byte *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "local_3c = (byte *)FUN_0017b740();" (assignment_expression "local_3c = (byte *)FUN_0017b740()" identifier = (cast_expression "(byte *)FUN_0017b740()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b740()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" if (parenthesized_expression "((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0))" ( (binary_expression "(local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)" (parenthesized_expression "(local_3c == (byte *)0x0)" ( (binary_expression "local_3c == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_44 = local_2c, local_2c == 0)" ( (comma_expression "local_44 = local_2c, local_2c == 0" (assignment_expression "local_44 = local_2c" identifier = identifier) , (binary_expression "local_2c == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }" { (labeled_statement "LAB_0017d320:\n    local_3c = (byte *)0x0;" statement_identifier : (expression_statement "local_3c = (byte *)0x0;" (assignment_expression "local_3c = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" else (compound_statement "{\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" { (if_statement "if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }" if (parenthesized_expression "(param_3 == 4)" ( (binary_expression "param_3 == 4" identifier == number_literal) )) (compound_statement "{\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (if_statement "if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }" if (parenthesized_expression "(*param_1 != param_1[1])" ( (binary_expression "*param_1 != param_1[1]" (pointer_expression "*param_1" * identifier) != (subscript_expression "param_1[1]" identifier [ number_literal ])) )) (compound_statement "{\n        iVar8 = param_1[1] - *param_1;\n      }" { (expression_statement "iVar8 = param_1[1] - *param_1;" (assignment_expression "iVar8 = param_1[1] - *param_1" identifier = (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) - (pointer_expression "*param_1" * identifier))) ;) })) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (labeled_statement "LAB_0017d3b0:\n      pbVar5 = pbVar2;" statement_identifier : (expression_statement "pbVar5 = pbVar2;" (assignment_expression "pbVar5 = pbVar2" identifier = identifier) ;)) (expression_statement "bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;" (assignment_expression "bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0" identifier = (binary_expression "((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)*pbVar5 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)*pbVar5 * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)*pbVar5 * 2" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) == number_literal)) ;) (expression_statement "pbVar2 = pbVar5;" (assignment_expression "pbVar2 = pbVar5" identifier = identifier) ;) (if_statement "if (!bVar9) goto LAB_0017d46d;" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (goto_statement "goto LAB_0017d46d;" goto statement_identifier ;)) (labeled_statement "LAB_0017d3c2:\n      bVar11 = false;" statement_identifier : (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;)) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "pbVar6 = pbVar2;" (assignment_expression "pbVar6 = pbVar2" identifier = identifier) ;) (expression_statement "pbVar7 = &DAT_00239751;" (assignment_expression "pbVar7 = &DAT_00239751" identifier = (pointer_expression "&DAT_00239751" & identifier)) ;) (do_statement "do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }" if (parenthesized_expression "((!bVar11 && !bVar9) == bVar11)" ( (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" ( (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier) )) (compound_statement "{\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }" { (expression_statement "pbVar2 = (byte *)FUN_0017d080();" (assignment_expression "pbVar2 = (byte *)FUN_0017d080()" identifier = (cast_expression "(byte *)FUN_0017d080()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d080()" identifier (argument_list "()" ( ))))) ;) (goto_statement "goto LAB_0017d47f;" goto statement_identifier ;) })) (do_statement "do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );" do (compound_statement "{\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      }" { (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;) (if_statement "if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }" if (parenthesized_expression "((int)pbVar2 - (int)pbVar5 == local_44)" ( (binary_expression "(int)pbVar2 - (int)pbVar5 == local_44" (binary_expression "(int)pbVar2 - (int)pbVar5" (cast_expression "(int)pbVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) == identifier) )) (compound_statement "{\n          return pbVar2;\n        }" { (return_statement "return pbVar2;" return identifier ;) })) (do_statement "do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);" do (compound_statement "{\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        }" { (expression_statement "pbVar5 = local_3c;" (assignment_expression "pbVar5 = local_3c" identifier = identifier) ;) (expression_statement "local_44 = (int)local_44 / 10;" (assignment_expression "local_44 = (int)local_44 / 10" identifier = (binary_expression "(int)local_44 / 10" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) / number_literal)) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar4 = iVar8 - (param_1[1] - iVar3);" (assignment_expression "iVar4 = iVar8 - (param_1[1] - iVar3)" identifier = (binary_expression "iVar8 - (param_1[1] - iVar3)" identifier - (parenthesized_expression "(param_1[1] - iVar3)" ( (binary_expression "param_1[1] - iVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) - identifier) )))) ;) (if_statement "if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }" if (parenthesized_expression "(param_1[1] == iVar3)" ( (binary_expression "param_1[1] == iVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n            iVar4 = iVar8;\n          }" { (expression_statement "iVar4 = iVar8;" (assignment_expression "iVar4 = iVar8" identifier = identifier) ;) })) (if_statement "if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n            param_1[1] = iVar3 + iVar8;\n          }" { (expression_statement "param_1[1] = iVar3 + iVar8;" (assignment_expression "param_1[1] = iVar3 + iVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar3 + iVar8" identifier + identifier)) ;) })) (expression_statement "pbVar2 = pbVar6 + -1;" (assignment_expression "pbVar2 = pbVar6 + -1" identifier = (binary_expression "pbVar6 + -1" identifier + number_literal)) ;) (if_statement "if (local_3c == (byte *)0x0) goto LAB_0017d320;" if (parenthesized_expression "(local_3c == (byte *)0x0)" ( (binary_expression "local_3c == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) (if_statement "if (local_44 != 0) goto LAB_0017d3b0;" if (parenthesized_expression "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017d3b0;" goto statement_identifier ;)) (expression_statement "local_44 = local_2c;" (assignment_expression "local_44 = local_2c" identifier = identifier) ;) (expression_statement "local_3c = (byte *)0x0;" (assignment_expression "local_3c = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;" (assignment_expression "bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0" identifier = (binary_expression "((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)*pbVar2 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)*pbVar2 * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)*pbVar2 * 2" (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) goto LAB_0017d3c2;" if (parenthesized_expression "(bVar9)" ( identifier )) (goto_statement "goto LAB_0017d3c2;" goto statement_identifier ;)) (labeled_statement "LAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();" statement_identifier : (expression_statement "pbVar2 = (byte *)FUN_0017d830();" (assignment_expression "pbVar2 = (byte *)FUN_0017d830()" identifier = (cast_expression "(byte *)FUN_0017d830()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d830()" identifier (argument_list "()" ( ))))) ;)) (labeled_statement "LAB_0017d47f:\n          pbVar6 = pbVar5;" statement_identifier : (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;)) }) while (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "sVar1 = strlen((char *)local_3c);" (assignment_expression "sVar1 = strlen((char *)local_3c)" identifier = (call_expression "strlen((char *)local_3c)" identifier (argument_list "((char *)local_3c)" ( (cast_expression "(char *)local_3c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sVar1 < local_2c) goto LAB_0017d320;" if (parenthesized_expression "(sVar1 < local_2c)" ( (binary_expression "sVar1 < local_2c" identifier < identifier) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) (if_statement "if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }" if (parenthesized_expression "((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2))" ( (binary_expression "(((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)" (parenthesized_expression "(((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f))" ( (binary_expression "((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)" (parenthesized_expression "((4 < (int)local_2c) && (*local_3c == 0x5f))" ( (binary_expression "(4 < (int)local_2c) && (*local_3c == 0x5f)" (parenthesized_expression "(4 < (int)local_2c)" ( (binary_expression "4 < (int)local_2c" number_literal < (cast_expression "(int)local_2c" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*local_3c == 0x5f)" ( (binary_expression "*local_3c == 0x5f" (pointer_expression "*local_3c" * identifier) == number_literal) ))) )) && (parenthesized_expression "(local_3c[1] == 0x5f)" ( (binary_expression "local_3c[1] == 0x5f" (subscript_expression "local_3c[1]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "((byte)(local_3c[2] + 0xac) < 2)" ( (binary_expression "(byte)(local_3c[2] + 0xac) < 2" (call_expression "(byte)(local_3c[2] + 0xac)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_3c[2] + 0xac)" ( (binary_expression "local_3c[2] + 0xac" (subscript_expression "local_3c[2]" identifier [ number_literal ]) + number_literal) ))) < number_literal) ))) )) (compound_statement "{\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }" { (if_statement "if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }" if (parenthesized_expression "((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30))" ( (binary_expression "(((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)" (parenthesized_expression "(((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0)" ( (binary_expression "((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0" (parenthesized_expression "((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)local_3c[3] * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)local_3c[3] * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)local_3c[3] * 2" (cast_expression "(uint)local_3c[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_3c[3]" identifier [ number_literal ])) * number_literal) ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_3c[3] != 0x30)" ( (binary_expression "local_3c[3] != 0x30" (subscript_expression "local_3c[3]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }" { (expression_statement "pbVar2 = (byte *)FUN_0017d280();" (assignment_expression "pbVar2 = (byte *)FUN_0017d280()" identifier = (cast_expression "(byte *)FUN_0017d280()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d280()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (if_statement "if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" if (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0017d304:\n          FUN_0017b850();\n        }" { (labeled_statement "LAB_0017d304:\n          FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" else (compound_statement "{\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" { (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" identifier = (pointer_expression "*pbVar2" * identifier)) ;) (if_statement "if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0017d80a:\n            FUN_0017b850();\n          }" { (labeled_statement "LAB_0017d80a:\n            FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" else (compound_statement "{\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" { (if_statement "if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }" if (parenthesized_expression "(bVar12 != 0x5a)" ( (binary_expression "bVar12 != 0x5a" identifier != number_literal) )) (compound_statement "{\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }" { (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (while_statement "while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }" { (if_statement "if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }" if (parenthesized_expression "(bVar12 == 0x48)" ( (binary_expression "bVar12 == 0x48" identifier == number_literal) )) (compound_statement "{\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }" { (expression_statement "bVar12 = pbVar2[1];" (assignment_expression "bVar12 = pbVar2[1]" identifier = (subscript_expression "pbVar2[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" identifier = (binary_expression "pbVar2 + 1" identifier + number_literal)) ;) })) (if_statement "if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" if (parenthesized_expression "(bVar12 == 0x54)" ( (binary_expression "bVar12 == 0x54" identifier == number_literal) )) (compound_statement "{\n                  pbVar2 = (byte *)FUN_0017c870();\n                }" { (expression_statement "pbVar2 = (byte *)FUN_0017c870();" (assignment_expression "pbVar2 = (byte *)FUN_0017c870()" identifier = (cast_expression "(byte *)FUN_0017c870()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) }) (else_clause "else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" else (if_statement "if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" if (parenthesized_expression "(bVar12 == 0x56)" ( (binary_expression "bVar12 == 0x56" identifier == number_literal) )) (compound_statement "{\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }" { (expression_statement "bVar12 = pbVar2[1];" (assignment_expression "bVar12 = pbVar2[1]" identifier = (subscript_expression "pbVar2[1]" identifier [ number_literal ])) ;) (expression_statement "FUN_0017c870();" (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0017b7c0();" (call_expression "FUN_0017b7c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "DAT_00000000 = 0;" (assignment_expression "DAT_00000000 = 0" identifier = number_literal) ;) (expression_statement "pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);" (assignment_expression "pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12)" identifier = (cast_expression "(byte *)FUN_0017c110((int)(char)bVar12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c110((int)(char)bVar12)" identifier (argument_list "((int)(char)bVar12)" ( (cast_expression "(int)(char)bVar12" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ))))) ;) }) (else_clause "else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" else (compound_statement "{\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" { (if_statement "if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }" if (parenthesized_expression "(bVar12 != 0x53)" ( (binary_expression "bVar12 != 0x53" identifier != number_literal) )) (compound_statement "{\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }" { (expression_statement "pbVar2 = (byte *)0x0;" (assignment_expression "pbVar2 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0017d55b;" goto statement_identifier ;) })) (expression_statement "pbVar2 = (byte *)FUN_0017d280();" (assignment_expression "pbVar2 = (byte *)FUN_0017d280()" identifier = (cast_expression "(byte *)FUN_0017d280()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d280()" identifier (argument_list "()" ( ))))) ;) }))))) (if_statement "if (pbVar2 == (byte *)0x0) goto LAB_0017d304;" if (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d304;" goto statement_identifier ;)) (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" identifier = (pointer_expression "*pbVar2" * identifier)) ;) (if_statement "if (bVar12 == 0) goto LAB_0017d80a;" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0017d80a;" goto statement_identifier ;)) (if_statement "if (bVar12 == 0x5a) break;" if (parenthesized_expression "(bVar12 == 0x5a)" ( (binary_expression "bVar12 == 0x5a" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" identifier = (pointer_expression "*pbVar2" * identifier)) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) })) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" identifier = (binary_expression "pbVar2 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0017d55b:\n            FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) (if_statement "if (pbVar2 == (byte *)0x0) goto LAB_0017d320;" if (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) }))) (if_statement "if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }" if (parenthesized_expression "(local_2c == (int)pbVar2 - (int)local_3c)" ( (binary_expression "local_2c == (int)pbVar2 - (int)local_3c" identifier == (binary_expression "(int)pbVar2 - (int)local_3c" (cast_expression "(int)pbVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n            return pbVar2;\n          }" { (return_statement "return pbVar2;" return identifier ;) })) }))) })) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;) })) (if_statement "if (6 < local_2c - 6) goto LAB_0017d350;" if (parenthesized_expression "(6 < local_2c - 6)" ( (binary_expression "6 < local_2c - 6" number_literal < (binary_expression "local_2c - 6" identifier - number_literal)) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;)) (expression_statement "bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);" (assignment_expression "bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" identifier = (binary_expression "0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" number_literal < (pointer_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" * (cast_expression "(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00239b20 + (local_2c - 6) * 4)" ( (binary_expression "&DAT_00239b20 + (local_2c - 6) * 4" (pointer_expression "&DAT_00239b20" & identifier) + (binary_expression "(local_2c - 6) * 4" (parenthesized_expression "(local_2c - 6)" ( (binary_expression "local_2c - 6" identifier - number_literal) )) * number_literal)) )))))) ;) (expression_statement "bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;" (assignment_expression "bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000" identifier = (binary_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000" (pointer_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" * (cast_expression "(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00239b20 + (local_2c - 6) * 4)" ( (binary_expression "&DAT_00239b20 + (local_2c - 6) * 4" (pointer_expression "&DAT_00239b20" & identifier) + (binary_expression "(local_2c - 6) * 4" (parenthesized_expression "(local_2c - 6)" ( (binary_expression "local_2c - 6" identifier - number_literal) )) * number_literal)) )))) == number_literal)) ;) (switch_statement "switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }" switch (parenthesized_expression "(local_2c)" ( identifier )) (compound_statement "{\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }" { (case_statement "case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;" case number_literal : (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__ctor";" (assignment_expression "pbVar5 = (byte *)"__ctor"" identifier = (cast_expression "(byte *)"__ctor"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ctor"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar9 && !bVar11) == bVar9;" (assignment_expression "bVar9 = (!bVar9 && !bVar11) == bVar9" identifier = (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return local_3c + local_2c;" return (binary_expression "local_3c + local_2c" identifier + identifier) ;) })) (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__dtor";" (assignment_expression "pbVar5 = (byte *)"__dtor"" identifier = (cast_expression "(byte *)"__dtor"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__dtor"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar2 < *pbVar5;" (assignment_expression "bVar10 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" identifier = (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return local_3c + local_2c;" return (binary_expression "local_3c + local_2c" identifier + identifier) ;) })) (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__initZ";" (assignment_expression "pbVar5 = (byte *)"__initZ"" identifier = (cast_expression "(byte *)"__initZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__initZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar2 < *pbVar5;" (assignment_expression "bVar11 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" ( (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = &UNK_00239781;" (assignment_expression "pbVar5 = &UNK_00239781" identifier = (pointer_expression "&UNK_00239781" & identifier)) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar2 < *pbVar5;" (assignment_expression "bVar10 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;" if (parenthesized_expression "((!bVar10 && !bVar9) != bVar10)" ( (binary_expression "(!bVar10 && !bVar9) != bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;)) })) (break_statement "break;" break ;)) (case_statement "case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;" case number_literal : (expression_statement "iVar8 = 8;" (assignment_expression "iVar8 = 8" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__ClassZ";" (assignment_expression "pbVar5 = (byte *)"__ClassZ"" identifier = (cast_expression "(byte *)"__ClassZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ClassZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" if (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" ( (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;)) (break_statement "break;" break ;)) (case_statement "case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" case number_literal : (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__postblitMFZ";" (assignment_expression "pbVar5 = (byte *)"__postblitMFZ"" identifier = (cast_expression "(byte *)"__postblitMFZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__postblitMFZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" if (parenthesized_expression "((!bVar9 && !bVar11) == bVar9)" ( (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return local_3c + local_2c + 3;" return (binary_expression "local_3c + local_2c + 3" (binary_expression "local_3c + local_2c" identifier + identifier) + number_literal) ;) }))) (case_statement "default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;" default : (labeled_statement "LAB_0017d350:\n      FUN_0017bbd0();" statement_identifier : (expression_statement "FUN_0017bbd0();" (call_expression "FUN_0017bbd0()" identifier (argument_list "()" ( ))) ;)) (return_statement "return local_3c + local_2c;" return (binary_expression "local_3c + local_2c" identifier + identifier) ;)) (case_statement "case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;" case number_literal : (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__InterfaceZ";" (assignment_expression "pbVar5 = (byte *)"__InterfaceZ"" identifier = (cast_expression "(byte *)"__InterfaceZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__InterfaceZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" if (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" ( (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;)) (break_statement "break;" break ;)) (case_statement "case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" case number_literal : (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__ModuleInfoZ";" (assignment_expression "pbVar5 = (byte *)"__ModuleInfoZ"" identifier = (cast_expression "(byte *)"__ModuleInfoZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ModuleInfoZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" if (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" ( (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;))) })) (expression_statement "FUN_0017bb50();" (call_expression "FUN_0017bb50()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar3 = (param_1[1] - iVar8) + -1;" (assignment_expression "iVar3 = (param_1[1] - iVar8) + -1" identifier = (binary_expression "(param_1[1] - iVar8) + -1" (parenthesized_expression "(param_1[1] - iVar8)" ( (binary_expression "param_1[1] - iVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) - identifier) )) + number_literal)) ;) (if_statement "if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }" if (parenthesized_expression "(iVar8 == param_1[1])" ( (binary_expression "iVar8 == param_1[1]" identifier == (subscript_expression "param_1[1]" identifier [ number_literal ])) )) (compound_statement "{\n      iVar3 = -1;\n    }" { (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" identifier = number_literal) ;) })) (expression_statement "local_3c = local_3c + local_2c;" (assignment_expression "local_3c = local_3c + local_2c" identifier = (binary_expression "local_3c + local_2c" identifier + identifier)) ;) (expression_statement "param_1[1] = iVar8 + iVar3;" (assignment_expression "param_1[1] = iVar8 + iVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar8 + iVar3" identifier + identifier)) ;) }))) (return_statement "return local_3c;" return identifier ;) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 dlang_identifier(string *decl,char *mangled,dlang_symbol_kinds kind)\n\n{\n  char cVar1;\n  size_t sVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  int iVar5;\n  char *pcVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  string *in_stack_ffffffb4;\n  char *in_stack_ffffffb8;\n  uint n;\n  dlang_symbol_kinds kind_00;\n  byte *local_3c;\n  long len;\n  string name;\n  \n  bVar14 = 0;\n  local_3c = (byte *)dlang_number(mangled,&len);\n  if ((local_3c == (byte *)0x0) || (len == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (kind == dlang_template_param) {\n      iVar10 = 0;\n      if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }\n      pbVar3 = local_3c;\n      kind_00 = len;\nLAB_0017d3b0:\n      pbVar7 = pbVar3;\n      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;\n      pbVar3 = pbVar7;\n      if (!bVar11) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar13 = false;\n      iVar5 = 2;\n      pbVar8 = pbVar3;\n      pbVar9 = &DAT_00239751;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );\n    }\n    n = len;\n    sVar2 = strlen((char *)local_3c);\n    if (sVar2 < n) goto LAB_0017d320;\n    if ((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < n - 6) goto _L493;\n    bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6];\n    bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000;\n    switch(n) {\n    case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;\n    case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;\n    case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }\n    default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);\n    case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;\n    case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";\n    }\n    string_prepend(decl,pcVar4);\n    pcVar4 = decl->b;\n    pcVar6 = decl->p + (-1 - (int)pcVar4);\n    if (pcVar4 == decl->p) {\n      pcVar6 = (char *)0xffffffff;\n    }\n    local_3c = local_3c + len;\n    decl->p = pcVar4 + (int)pcVar6;\n  }\n  return (char *)local_3c;\n}\n\n" comment (function_definition "char * __regparm3 dlang_identifier(string *decl,char *mangled,dlang_symbol_kinds kind)\n\n{\n  char cVar1;\n  size_t sVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  int iVar5;\n  char *pcVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  string *in_stack_ffffffb4;\n  char *in_stack_ffffffb8;\n  uint n;\n  dlang_symbol_kinds kind_00;\n  byte *local_3c;\n  long len;\n  string name;\n  \n  bVar14 = 0;\n  local_3c = (byte *)dlang_number(mangled,&len);\n  if ((local_3c == (byte *)0x0) || (len == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (kind == dlang_template_param) {\n      iVar10 = 0;\n      if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }\n      pbVar3 = local_3c;\n      kind_00 = len;\nLAB_0017d3b0:\n      pbVar7 = pbVar3;\n      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;\n      pbVar3 = pbVar7;\n      if (!bVar11) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar13 = false;\n      iVar5 = 2;\n      pbVar8 = pbVar3;\n      pbVar9 = &DAT_00239751;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );\n    }\n    n = len;\n    sVar2 = strlen((char *)local_3c);\n    if (sVar2 < n) goto LAB_0017d320;\n    if ((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < n - 6) goto _L493;\n    bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6];\n    bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000;\n    switch(n) {\n    case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;\n    case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;\n    case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }\n    default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);\n    case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;\n    case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";\n    }\n    string_prepend(decl,pcVar4);\n    pcVar4 = decl->b;\n    pcVar6 = decl->p + (-1 - (int)pcVar4);\n    if (pcVar4 == decl->p) {\n      pcVar6 = (char *)0xffffffff;\n    }\n    local_3c = local_3c + len;\n    decl->p = pcVar4 + (int)pcVar6;\n  }\n  return (char *)local_3c;\n}" primitive_type (pointer_declarator "* __regparm3 dlang_identifier(string *decl,char *mangled,dlang_symbol_kinds kind)" * (ERROR "__regparm3" identifier) (function_declarator "dlang_identifier(string *decl,char *mangled,dlang_symbol_kinds kind)" identifier (parameter_list "(string *decl,char *mangled,dlang_symbol_kinds kind)" ( (parameter_declaration "string *decl" type_identifier (pointer_declarator "*decl" * identifier)) , (parameter_declaration "char *mangled" primitive_type (pointer_declarator "*mangled" * identifier)) , (parameter_declaration "dlang_symbol_kinds kind" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  size_t sVar2;\n  byte *pbVar3;\n  char *pcVar4;\n  int iVar5;\n  char *pcVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  string *in_stack_ffffffb4;\n  char *in_stack_ffffffb8;\n  uint n;\n  dlang_symbol_kinds kind_00;\n  byte *local_3c;\n  long len;\n  string name;\n  \n  bVar14 = 0;\n  local_3c = (byte *)dlang_number(mangled,&len);\n  if ((local_3c == (byte *)0x0) || (len == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (kind == dlang_template_param) {\n      iVar10 = 0;\n      if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }\n      pbVar3 = local_3c;\n      kind_00 = len;\nLAB_0017d3b0:\n      pbVar7 = pbVar3;\n      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;\n      pbVar3 = pbVar7;\n      if (!bVar11) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar13 = false;\n      iVar5 = 2;\n      pbVar8 = pbVar3;\n      pbVar9 = &DAT_00239751;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );\n    }\n    n = len;\n    sVar2 = strlen((char *)local_3c);\n    if (sVar2 < n) goto LAB_0017d320;\n    if ((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < n - 6) goto _L493;\n    bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6];\n    bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000;\n    switch(n) {\n    case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;\n    case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;\n    case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }\n    default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);\n    case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;\n    case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";\n    }\n    string_prepend(decl,pcVar4);\n    pcVar4 = decl->b;\n    pcVar6 = decl->p + (-1 - (int)pcVar4);\n    if (pcVar4 == decl->p) {\n      pcVar6 = (char *)0xffffffff;\n    }\n    local_3c = local_3c + len;\n    decl->p = pcVar4 + (int)pcVar6;\n  }\n  return (char *)local_3c;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "string *in_stack_ffffffb4;" type_identifier (pointer_declarator "*in_stack_ffffffb4" * identifier) ;) (declaration "char *in_stack_ffffffb8;" primitive_type (pointer_declarator "*in_stack_ffffffb8" * identifier) ;) (declaration "uint n;" type_identifier identifier ;) (declaration "dlang_symbol_kinds kind_00;" type_identifier identifier ;) (declaration "byte *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "long len;" (sized_type_specifier "long" long) identifier ;) (declaration "string name;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "local_3c = (byte *)dlang_number(mangled,&len);" (assignment_expression "local_3c = (byte *)dlang_number(mangled,&len)" identifier = (cast_expression "(byte *)dlang_number(mangled,&len)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dlang_number(mangled,&len)" identifier (argument_list "(mangled,&len)" ( identifier , (pointer_expression "&len" & identifier) ))))) ;) (if_statement "if ((local_3c == (byte *)0x0) || (len == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (kind == dlang_template_param) {\n      iVar10 = 0;\n      if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }\n      pbVar3 = local_3c;\n      kind_00 = len;\nLAB_0017d3b0:\n      pbVar7 = pbVar3;\n      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;\n      pbVar3 = pbVar7;\n      if (!bVar11) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar13 = false;\n      iVar5 = 2;\n      pbVar8 = pbVar3;\n      pbVar9 = &DAT_00239751;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );\n    }\n    n = len;\n    sVar2 = strlen((char *)local_3c);\n    if (sVar2 < n) goto LAB_0017d320;\n    if ((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < n - 6) goto _L493;\n    bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6];\n    bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000;\n    switch(n) {\n    case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;\n    case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;\n    case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }\n    default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);\n    case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;\n    case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";\n    }\n    string_prepend(decl,pcVar4);\n    pcVar4 = decl->b;\n    pcVar6 = decl->p + (-1 - (int)pcVar4);\n    if (pcVar4 == decl->p) {\n      pcVar6 = (char *)0xffffffff;\n    }\n    local_3c = local_3c + len;\n    decl->p = pcVar4 + (int)pcVar6;\n  }" if (parenthesized_expression "((local_3c == (byte *)0x0) || (len == 0))" ( (binary_expression "(local_3c == (byte *)0x0) || (len == 0)" (parenthesized_expression "(local_3c == (byte *)0x0)" ( (binary_expression "local_3c == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(len == 0)" ( (binary_expression "len == 0" identifier == number_literal) ))) )) (compound_statement "{\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }" { (labeled_statement "LAB_0017d320:\n    local_3c = (byte *)0x0;" statement_identifier : (expression_statement "local_3c = (byte *)0x0;" (assignment_expression "local_3c = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n    if (kind == dlang_template_param) {\n      iVar10 = 0;\n      if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }\n      pbVar3 = local_3c;\n      kind_00 = len;\nLAB_0017d3b0:\n      pbVar7 = pbVar3;\n      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;\n      pbVar3 = pbVar7;\n      if (!bVar11) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar13 = false;\n      iVar5 = 2;\n      pbVar8 = pbVar3;\n      pbVar9 = &DAT_00239751;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );\n    }\n    n = len;\n    sVar2 = strlen((char *)local_3c);\n    if (sVar2 < n) goto LAB_0017d320;\n    if ((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < n - 6) goto _L493;\n    bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6];\n    bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000;\n    switch(n) {\n    case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;\n    case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;\n    case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }\n    default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);\n    case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;\n    case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";\n    }\n    string_prepend(decl,pcVar4);\n    pcVar4 = decl->b;\n    pcVar6 = decl->p + (-1 - (int)pcVar4);\n    if (pcVar4 == decl->p) {\n      pcVar6 = (char *)0xffffffff;\n    }\n    local_3c = local_3c + len;\n    decl->p = pcVar4 + (int)pcVar6;\n  }" else (compound_statement "{\n    if (kind == dlang_template_param) {\n      iVar10 = 0;\n      if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }\n      pbVar3 = local_3c;\n      kind_00 = len;\nLAB_0017d3b0:\n      pbVar7 = pbVar3;\n      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;\n      pbVar3 = pbVar7;\n      if (!bVar11) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar13 = false;\n      iVar5 = 2;\n      pbVar8 = pbVar3;\n      pbVar9 = &DAT_00239751;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );\n    }\n    n = len;\n    sVar2 = strlen((char *)local_3c);\n    if (sVar2 < n) goto LAB_0017d320;\n    if ((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < n - 6) goto _L493;\n    bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6];\n    bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000;\n    switch(n) {\n    case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;\n    case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;\n    case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }\n    default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);\n    case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;\n    case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";\n    }\n    string_prepend(decl,pcVar4);\n    pcVar4 = decl->b;\n    pcVar6 = decl->p + (-1 - (int)pcVar4);\n    if (pcVar4 == decl->p) {\n      pcVar6 = (char *)0xffffffff;\n    }\n    local_3c = local_3c + len;\n    decl->p = pcVar4 + (int)pcVar6;\n  }" { (if_statement "if (kind == dlang_template_param) {\n      iVar10 = 0;\n      if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }\n      pbVar3 = local_3c;\n      kind_00 = len;\nLAB_0017d3b0:\n      pbVar7 = pbVar3;\n      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;\n      pbVar3 = pbVar7;\n      if (!bVar11) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar13 = false;\n      iVar5 = 2;\n      pbVar8 = pbVar3;\n      pbVar9 = &DAT_00239751;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );\n    }" if (parenthesized_expression "(kind == dlang_template_param)" ( (binary_expression "kind == dlang_template_param" identifier == identifier) )) (compound_statement "{\n      iVar10 = 0;\n      if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }\n      pbVar3 = local_3c;\n      kind_00 = len;\nLAB_0017d3b0:\n      pbVar7 = pbVar3;\n      bVar11 = (_sch_istable[*pbVar7] & 4) == 0;\n      pbVar3 = pbVar7;\n      if (!bVar11) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar13 = false;\n      iVar5 = 2;\n      pbVar8 = pbVar3;\n      pbVar9 = &DAT_00239751;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );\n    }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (decl->b != decl->p) {\n        iVar10 = (int)decl->p - (int)decl->b;\n      }" if (parenthesized_expression "(decl->b != decl->p)" ( (binary_expression "decl->b != decl->p" (field_expression "decl->b" identifier -> field_identifier) != (field_expression "decl->p" identifier -> field_identifier)) )) (compound_statement "{\n        iVar10 = (int)decl->p - (int)decl->b;\n      }" { (expression_statement "iVar10 = (int)decl->p - (int)decl->b;" (assignment_expression "iVar10 = (int)decl->p - (int)decl->b" identifier = (binary_expression "(int)decl->p - (int)decl->b" (cast_expression "(int)decl->p" ( (type_descriptor "int" primitive_type) ) (field_expression "decl->p" identifier -> field_identifier)) - (cast_expression "(int)decl->b" ( (type_descriptor "int" primitive_type) ) (field_expression "decl->b" identifier -> field_identifier)))) ;) })) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "kind_00 = len;" (assignment_expression "kind_00 = len" identifier = identifier) ;) (labeled_statement "LAB_0017d3b0:\n      pbVar7 = pbVar3;" statement_identifier : (expression_statement "pbVar7 = pbVar3;" (assignment_expression "pbVar7 = pbVar3" identifier = identifier) ;)) (expression_statement "bVar11 = (_sch_istable[*pbVar7] & 4) == 0;" (assignment_expression "bVar11 = (_sch_istable[*pbVar7] & 4) == 0" identifier = (binary_expression "(_sch_istable[*pbVar7] & 4) == 0" (parenthesized_expression "(_sch_istable[*pbVar7] & 4)" ( (binary_expression "_sch_istable[*pbVar7] & 4" (subscript_expression "_sch_istable[*pbVar7]" identifier [ (pointer_expression "*pbVar7" * identifier) ]) & number_literal) )) == number_literal)) ;) (expression_statement "pbVar3 = pbVar7;" (assignment_expression "pbVar3 = pbVar7" identifier = identifier) ;) (if_statement "if (!bVar11) goto LAB_0017d46d;" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (goto_statement "goto LAB_0017d46d;" goto statement_identifier ;)) (labeled_statement "LAB_0017d3c2:\n      bVar13 = false;" statement_identifier : (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;)) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (expression_statement "pbVar8 = pbVar3;" (assignment_expression "pbVar8 = pbVar3" identifier = identifier) ;) (expression_statement "pbVar9 = &DAT_00239751;" (assignment_expression "pbVar9 = &DAT_00239751" identifier = (pointer_expression "&DAT_00239751" & identifier)) ;) (do_statement "do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar13 = *pbVar8 < *pbVar9;\n        bVar11 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;\n      }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar8 < *pbVar9;" (assignment_expression "bVar13 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar8 == *pbVar9;" (assignment_expression "bVar11 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar13 && !bVar11) == bVar13) {\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }" if (parenthesized_expression "((!bVar13 && !bVar11) == bVar13)" ( (binary_expression "(!bVar13 && !bVar11) == bVar13" (parenthesized_expression "(!bVar13 && !bVar11)" ( (binary_expression "!bVar13 && !bVar11" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n        pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);\n        goto LAB_0017d47f;\n      }" { (expression_statement "pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function);" (assignment_expression "pbVar3 = (byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function)" identifier = (cast_expression "(byte *)dlang_parse_mangle(decl,(char *)pbVar3,dlang_function)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dlang_parse_mangle(decl,(char *)pbVar3,dlang_function)" identifier (argument_list "(decl,(char *)pbVar3,dlang_function)" ( identifier , (cast_expression "(char *)pbVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (goto_statement "goto LAB_0017d47f;" goto statement_identifier ;) })) (do_statement "do {\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      } while( true );" do (compound_statement "{\n        pbVar8 = pbVar7;\n        if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }\n        do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);\n      }" { (expression_statement "pbVar8 = pbVar7;" (assignment_expression "pbVar8 = pbVar7" identifier = identifier) ;) (if_statement "if ((int)pbVar3 - (int)pbVar7 == kind_00) {\n          return (char *)pbVar3;\n        }" if (parenthesized_expression "((int)pbVar3 - (int)pbVar7 == kind_00)" ( (binary_expression "(int)pbVar3 - (int)pbVar7 == kind_00" (binary_expression "(int)pbVar3 - (int)pbVar7" (cast_expression "(int)pbVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar7" ( (type_descriptor "int" primitive_type) ) identifier)) == identifier) )) (compound_statement "{\n          return (char *)pbVar3;\n        }" { (return_statement "return (char *)pbVar3;" return (cast_expression "(char *)pbVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (do_statement "do {\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        } while (pbVar3 == (byte *)0x0);" do (compound_statement "{\n          pbVar7 = local_3c;\n          kind_00 = (int)kind_00 / 10;\n          pcVar4 = decl->b;\n          iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);\n          if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }\n          if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }\n          pbVar3 = pbVar8 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (kind_00 != dlang_top_level) goto LAB_0017d3b0;\n          local_3c = (byte *)0x0;\n          bVar11 = (_sch_istable[*pbVar3] & 4) == 0;\n          kind_00 = len;\n          if (bVar11) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);\nLAB_0017d47f:\n          pbVar8 = pbVar7;\n        }" { (expression_statement "pbVar7 = local_3c;" (assignment_expression "pbVar7 = local_3c" identifier = identifier) ;) (expression_statement "kind_00 = (int)kind_00 / 10;" (assignment_expression "kind_00 = (int)kind_00 / 10" identifier = (binary_expression "(int)kind_00 / 10" (cast_expression "(int)kind_00" ( (type_descriptor "int" primitive_type) ) identifier) / number_literal)) ;) (expression_statement "pcVar4 = decl->b;" (assignment_expression "pcVar4 = decl->b" identifier = (field_expression "decl->b" identifier -> field_identifier)) ;) (expression_statement "iVar5 = iVar10 - ((int)decl->p - (int)pcVar4);" (assignment_expression "iVar5 = iVar10 - ((int)decl->p - (int)pcVar4)" identifier = (binary_expression "iVar10 - ((int)decl->p - (int)pcVar4)" identifier - (parenthesized_expression "((int)decl->p - (int)pcVar4)" ( (binary_expression "(int)decl->p - (int)pcVar4" (cast_expression "(int)decl->p" ( (type_descriptor "int" primitive_type) ) (field_expression "decl->p" identifier -> field_identifier)) - (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (decl->p == pcVar4) {\n            iVar5 = iVar10;\n          }" if (parenthesized_expression "(decl->p == pcVar4)" ( (binary_expression "decl->p == pcVar4" (field_expression "decl->p" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            iVar5 = iVar10;\n          }" { (expression_statement "iVar5 = iVar10;" (assignment_expression "iVar5 = iVar10" identifier = identifier) ;) })) (if_statement "if (iVar5 < 0) {\n            decl->p = pcVar4 + iVar10;\n          }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n            decl->p = pcVar4 + iVar10;\n          }" { (expression_statement "decl->p = pcVar4 + iVar10;" (assignment_expression "decl->p = pcVar4 + iVar10" (field_expression "decl->p" identifier -> field_identifier) = (binary_expression "pcVar4 + iVar10" identifier + identifier)) ;) })) (expression_statement "pbVar3 = pbVar8 + -1;" (assignment_expression "pbVar3 = pbVar8 + -1" identifier = (binary_expression "pbVar8 + -1" identifier + number_literal)) ;) (if_statement "if (local_3c == (byte *)0x0) goto LAB_0017d320;" if (parenthesized_expression "(local_3c == (byte *)0x0)" ( (binary_expression "local_3c == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) (if_statement "if (kind_00 != dlang_top_level) goto LAB_0017d3b0;" if (parenthesized_expression "(kind_00 != dlang_top_level)" ( (binary_expression "kind_00 != dlang_top_level" identifier != identifier) )) (goto_statement "goto LAB_0017d3b0;" goto statement_identifier ;)) (expression_statement "local_3c = (byte *)0x0;" (assignment_expression "local_3c = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar11 = (_sch_istable[*pbVar3] & 4) == 0;" (assignment_expression "bVar11 = (_sch_istable[*pbVar3] & 4) == 0" identifier = (binary_expression "(_sch_istable[*pbVar3] & 4) == 0" (parenthesized_expression "(_sch_istable[*pbVar3] & 4)" ( (binary_expression "_sch_istable[*pbVar3] & 4" (subscript_expression "_sch_istable[*pbVar3]" identifier [ (pointer_expression "*pbVar3" * identifier) ]) & number_literal) )) == number_literal)) ;) (expression_statement "kind_00 = len;" (assignment_expression "kind_00 = len" identifier = identifier) ;) (if_statement "if (bVar11) goto LAB_0017d3c2;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_0017d3c2;" goto statement_identifier ;)) (labeled_statement "LAB_0017d46d:\n          pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);" statement_identifier : (expression_statement "pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00);" (assignment_expression "pbVar3 = (byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00)" identifier = (cast_expression "(byte *)dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dlang_parse_qualified(in_stack_ffffffb4,in_stack_ffffffb8,kind_00)" identifier (argument_list "(in_stack_ffffffb4,in_stack_ffffffb8,kind_00)" ( identifier , identifier , identifier ))))) ;)) (labeled_statement "LAB_0017d47f:\n          pbVar8 = pbVar7;" statement_identifier : (expression_statement "pbVar8 = pbVar7;" (assignment_expression "pbVar8 = pbVar7" identifier = identifier) ;)) }) while (parenthesized_expression "(pbVar3 == (byte *)0x0)" ( (binary_expression "pbVar3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "n = len;" (assignment_expression "n = len" identifier = identifier) ;) (expression_statement "sVar2 = strlen((char *)local_3c);" (assignment_expression "sVar2 = strlen((char *)local_3c)" identifier = (call_expression "strlen((char *)local_3c)" identifier (argument_list "((char *)local_3c)" ( (cast_expression "(char *)local_3c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sVar2 < n) goto LAB_0017d320;" if (parenthesized_expression "(sVar2 < n)" ( (binary_expression "sVar2 < n" identifier < identifier) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) (if_statement "if ((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }" if (parenthesized_expression "((((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2))" ( (binary_expression "(((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)" (parenthesized_expression "(((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f))" ( (binary_expression "((4 < (int)n) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)" (parenthesized_expression "((4 < (int)n) && (*local_3c == 0x5f))" ( (binary_expression "(4 < (int)n) && (*local_3c == 0x5f)" (parenthesized_expression "(4 < (int)n)" ( (binary_expression "4 < (int)n" number_literal < (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*local_3c == 0x5f)" ( (binary_expression "*local_3c == 0x5f" (pointer_expression "*local_3c" * identifier) == number_literal) ))) )) && (parenthesized_expression "(local_3c[1] == 0x5f)" ( (binary_expression "local_3c[1] == 0x5f" (subscript_expression "local_3c[1]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "((byte)(local_3c[2] + 0xac) < 2)" ( (binary_expression "(byte)(local_3c[2] + 0xac) < 2" (call_expression "(byte)(local_3c[2] + 0xac)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_3c[2] + 0xac)" ( (binary_expression "local_3c[2] + 0xac" (subscript_expression "local_3c[2]" identifier [ number_literal ]) + number_literal) ))) < number_literal) ))) )) (compound_statement "{\n      if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }" { (if_statement "if (((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }" if (parenthesized_expression "(((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30))" ( (binary_expression "((_sch_istable[local_3c[3]] & 4) != 0) && (local_3c[3] != 0x30)" (parenthesized_expression "((_sch_istable[local_3c[3]] & 4) != 0)" ( (binary_expression "(_sch_istable[local_3c[3]] & 4) != 0" (parenthesized_expression "(_sch_istable[local_3c[3]] & 4)" ( (binary_expression "_sch_istable[local_3c[3]] & 4" (subscript_expression "_sch_istable[local_3c[3]]" identifier [ (subscript_expression "local_3c[3]" identifier [ number_literal ]) ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_3c[3] != 0x30)" ( (binary_expression "local_3c[3] != 0x30" (subscript_expression "local_3c[3]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);\n        string_append(decl,"!(");\n        if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }\n      }" { (expression_statement "pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident);" (assignment_expression "pcVar4 = dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident)" identifier = (call_expression "dlang_identifier(decl,(char *)(local_3c + 3),dlang_template_ident)" identifier (argument_list "(decl,(char *)(local_3c + 3),dlang_template_ident)" ( identifier , (cast_expression "(char *)(local_3c + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 3)" ( (binary_expression "local_3c + 3" identifier + number_literal) ))) , identifier )))) ;) (expression_statement "string_append(decl,"!(");" (call_expression "string_append(decl,"!(")" identifier (argument_list "(decl,"!(")" ( identifier , (string_literal ""!("" " string_content ") ))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\nLAB_0017d304:\n          string_append(decl,")");\n        }\n        else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0017d304:\n          string_append(decl,")");\n        }" { (labeled_statement "LAB_0017d304:\n          string_append(decl,")");" statement_identifier : (expression_statement "string_append(decl,")");" (call_expression "string_append(decl,")")" identifier (argument_list "(decl,")")" ( identifier , (string_literal "")"" " string_content ") ))) ;)) }) (else_clause "else {\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }" else (compound_statement "{\n          cVar1 = *pcVar4;\n          if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }\n          if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }\n        }" { (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (if_statement "if (cVar1 == '\0') {\nLAB_0017d80a:\n            string_append(decl,")");\n          }\n          else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0017d80a:\n            string_append(decl,")");\n          }" { (labeled_statement "LAB_0017d80a:\n            string_append(decl,")");" statement_identifier : (expression_statement "string_append(decl,")");" (call_expression "string_append(decl,")")" identifier (argument_list "(decl,")")" ( identifier , (string_literal "")"" " string_content ") ))) ;)) }) (else_clause "else {\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }" else (compound_statement "{\n            if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }\n            pcVar4 = pcVar4 + 1;\nLAB_0017d55b:\n            string_append(decl,")");\n            if (pcVar4 == (char *)0x0) goto LAB_0017d320;\n          }" { (if_statement "if (cVar1 != 'Z') {\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }" if (parenthesized_expression "(cVar1 != 'Z')" ( (binary_expression "cVar1 != 'Z'" identifier != (char_literal "'Z'" ' character ')) )) (compound_statement "{\n              iVar10 = 1;\n              while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }\n            }" { (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (while_statement "while( true ) {\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }\n                if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }\n                if (pcVar4 == (char *)0x0) goto LAB_0017d304;\n                cVar1 = *pcVar4;\n                if (cVar1 == '\0') goto LAB_0017d80a;\n                if (cVar1 == 'Z') break;\n                if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }\n                iVar10 = iVar10 + 1;\n              }" { (if_statement "if (cVar1 == 'H') {\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }" if (parenthesized_expression "(cVar1 == 'H')" ( (binary_expression "cVar1 == 'H'" identifier == (char_literal "'H'" ' character ')) )) (compound_statement "{\n                  cVar1 = pcVar4[1];\n                  pcVar4 = pcVar4 + 1;\n                }" { (expression_statement "cVar1 = pcVar4[1];" (assignment_expression "cVar1 = pcVar4[1]" identifier = (subscript_expression "pcVar4[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) })) (if_statement "if (cVar1 == 'T') {\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }\n                else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }" if (parenthesized_expression "(cVar1 == 'T')" ( (binary_expression "cVar1 == 'T'" identifier == (char_literal "'T'" ' character ')) )) (compound_statement "{\n                  pcVar4 = dlang_type(decl,pcVar4 + 1);\n                }" { (expression_statement "pcVar4 = dlang_type(decl,pcVar4 + 1);" (assignment_expression "pcVar4 = dlang_type(decl,pcVar4 + 1)" identifier = (call_expression "dlang_type(decl,pcVar4 + 1)" identifier (argument_list "(decl,pcVar4 + 1)" ( identifier , (binary_expression "pcVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }" else (if_statement "if (cVar1 == 'V') {\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }\n                else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }" if (parenthesized_expression "(cVar1 == 'V')" ( (binary_expression "cVar1 == 'V'" identifier == (char_literal "'V'" ' character ')) )) (compound_statement "{\n                  cVar1 = pcVar4[1];\n                  name.e = (char *)0x0;\n                  name.p = (char *)0x0;\n                  name.b = (char *)0x0;\n                  pcVar4 = dlang_type(&name,pcVar4 + 1);\n                  string_need(&name,1);\n                  *name.p = '\0';\n                  pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);\n                  if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }\n                }" { (expression_statement "cVar1 = pcVar4[1];" (assignment_expression "cVar1 = pcVar4[1]" identifier = (subscript_expression "pcVar4[1]" identifier [ number_literal ])) ;) (expression_statement "name.e = (char *)0x0;" (assignment_expression "name.e = (char *)0x0" (field_expression "name.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "name.p = (char *)0x0;" (assignment_expression "name.p = (char *)0x0" (field_expression "name.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "name.b = (char *)0x0;" (assignment_expression "name.b = (char *)0x0" (field_expression "name.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar4 = dlang_type(&name,pcVar4 + 1);" (assignment_expression "pcVar4 = dlang_type(&name,pcVar4 + 1)" identifier = (call_expression "dlang_type(&name,pcVar4 + 1)" identifier (argument_list "(&name,pcVar4 + 1)" ( (pointer_expression "&name" & identifier) , (binary_expression "pcVar4 + 1" identifier + number_literal) )))) ;) (expression_statement "string_need(&name,1);" (call_expression "string_need(&name,1)" identifier (argument_list "(&name,1)" ( (pointer_expression "&name" & identifier) , number_literal ))) ;) (expression_statement "*name.p = '\0';" (assignment_expression "*name.p = '\0'" (pointer_expression "*name.p" * (field_expression "name.p" identifier . field_identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1);" (assignment_expression "pcVar4 = dlang_value(decl,pcVar4,name.b,cVar1)" identifier = (call_expression "dlang_value(decl,pcVar4,name.b,cVar1)" identifier (argument_list "(decl,pcVar4,name.b,cVar1)" ( identifier , identifier , (field_expression "name.b" identifier . field_identifier) , identifier )))) ;) (if_statement "if (name.b != (char *)0x0) {\n                    free(name.b);\n                  }" if (parenthesized_expression "(name.b != (char *)0x0)" ( (binary_expression "name.b != (char *)0x0" (field_expression "name.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    free(name.b);\n                  }" { (expression_statement "free(name.b);" (call_expression "free(name.b)" identifier (argument_list "(name.b)" ( (field_expression "name.b" identifier . field_identifier) ))) ;) })) }) (else_clause "else {\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }" else (compound_statement "{\n                  if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);\n                }" { (if_statement "if (cVar1 != 'S') {\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }" if (parenthesized_expression "(cVar1 != 'S')" ( (binary_expression "cVar1 != 'S'" identifier != (char_literal "'S'" ' character ')) )) (compound_statement "{\n                    pcVar4 = (char *)0x0;\n                    goto LAB_0017d55b;\n                  }" { (expression_statement "pcVar4 = (char *)0x0;" (assignment_expression "pcVar4 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0017d55b;" goto statement_identifier ;) })) (expression_statement "pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param);" (assignment_expression "pcVar4 = dlang_identifier(decl,pcVar4 + 1,dlang_template_param)" identifier = (call_expression "dlang_identifier(decl,pcVar4 + 1,dlang_template_param)" identifier (argument_list "(decl,pcVar4 + 1,dlang_template_param)" ( identifier , (binary_expression "pcVar4 + 1" identifier + number_literal) , identifier )))) ;) }))))) (if_statement "if (pcVar4 == (char *)0x0) goto LAB_0017d304;" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d304;" goto statement_identifier ;)) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (if_statement "if (cVar1 == '\0') goto LAB_0017d80a;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0017d80a;" goto statement_identifier ;)) (if_statement "if (cVar1 == 'Z') break;" if (parenthesized_expression "(cVar1 == 'Z')" ( (binary_expression "cVar1 == 'Z'" identifier == (char_literal "'Z'" ' character ')) )) (break_statement "break;" break ;)) (if_statement "if (iVar10 != 0) {\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                  string_append(decl,", ");\n                  cVar1 = *pcVar4;\n                }" { (expression_statement "string_append(decl,", ");" (call_expression "string_append(decl,", ")" identifier (argument_list "(decl,", ")" ( identifier , (string_literal "", "" " string_content ") ))) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) })) })) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0017d55b:\n            string_append(decl,")");" statement_identifier : (expression_statement "string_append(decl,")");" (call_expression "string_append(decl,")")" identifier (argument_list "(decl,")")" ( identifier , (string_literal "")"" " string_content ") ))) ;)) (if_statement "if (pcVar4 == (char *)0x0) goto LAB_0017d320;" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) }))) (if_statement "if (n == (int)pcVar4 - (int)local_3c) {\n            return pcVar4;\n          }" if (parenthesized_expression "(n == (int)pcVar4 - (int)local_3c)" ( (binary_expression "n == (int)pcVar4 - (int)local_3c" identifier == (binary_expression "(int)pcVar4 - (int)local_3c" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n            return pcVar4;\n          }" { (return_statement "return pcVar4;" return identifier ;) })) }))) })) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;) })) (if_statement "if (6 < n - 6) goto _L493;" if (parenthesized_expression "(6 < n - 6)" ( (binary_expression "6 < n - 6" number_literal < (binary_expression "n - 6" identifier - number_literal)) )) (goto_statement "goto _L493;" goto statement_identifier ;)) (expression_statement "bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6];" (assignment_expression "bVar11 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6]" identifier = (binary_expression "0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[n - 6]" number_literal < (subscript_expression "(&switchD_0017d302::switchdataD_00239b20)[n - 6]" (parenthesized_expression "(&switchD_0017d302::switchdataD_00239b20)" ( (ERROR "&switchD_0017d302::" (pointer_expression "&switchD_0017d302" & identifier) : :) identifier )) [ (binary_expression "n - 6" identifier - number_literal) ]))) ;) (expression_statement "bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000;" (assignment_expression "bVar13 = (&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000" identifier = (binary_expression "(&switchD_0017d302::switchdataD_00239b20)[n - 6] == 0xffcfe000" (subscript_expression "(&switchD_0017d302::switchdataD_00239b20)[n - 6]" (parenthesized_expression "(&switchD_0017d302::switchdataD_00239b20)" ( (ERROR "&switchD_0017d302::" (pointer_expression "&switchD_0017d302" & identifier) : :) identifier )) [ (binary_expression "n - 6" identifier - number_literal) ]) == number_literal)) ;) (switch_statement "switch(n) {\n    case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;\n    case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;\n    case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }\n    default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);\n    case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;\n    case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";\n    }" switch (parenthesized_expression "(n)" ( identifier )) (compound_statement "{\n    case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;\n    case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;\n    case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }\n    default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);\n    case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;\n    case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";\n    }" { (case_statement "case 6:\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ctor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 6;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__dtor";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar13 = false;\n      bVar11 = (!bVar12 && !bVar11) == bVar12;\n      if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }\n      iVar10 = 7;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__initZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);\n      bVar12 = false;\n      bVar11 = (!bVar13 && !bVar11) == bVar13;\n      if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }\n      break;" case number_literal : (expression_statement "iVar10 = 6;" (assignment_expression "iVar10 = 6" identifier = number_literal) ;) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"__ctor";" (assignment_expression "pbVar7 = (byte *)"__ctor"" identifier = (cast_expression "(byte *)"__ctor"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ctor"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar3 < *pbVar7;" (assignment_expression "bVar11 = *pbVar3 < *pbVar7" identifier = (binary_expression "*pbVar3 < *pbVar7" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar13 = *pbVar3 == *pbVar7;" (assignment_expression "bVar13 = *pbVar3 == *pbVar7" identifier = (binary_expression "*pbVar3 == *pbVar7" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar11 = (!bVar11 && !bVar13) == bVar11;" (assignment_expression "bVar11 = (!bVar11 && !bVar13) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar13) == bVar11" (parenthesized_expression "(!bVar11 && !bVar13)" ( (binary_expression "!bVar11 && !bVar13" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar11) {\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n        string_append(decl,"this");\n        return (char *)(local_3c + len);\n      }" { (expression_statement "string_append(decl,"this");" (call_expression "string_append(decl,"this")" identifier (argument_list "(decl,"this")" ( identifier , (string_literal ""this"" " string_content ") ))) ;) (return_statement "return (char *)(local_3c + len);" return (cast_expression "(char *)(local_3c + len)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + len)" ( (binary_expression "local_3c + len" identifier + identifier) ))) ;) })) (expression_statement "iVar10 = 6;" (assignment_expression "iVar10 = 6" identifier = number_literal) ;) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"__dtor";" (assignment_expression "pbVar7 = (byte *)"__dtor"" identifier = (cast_expression "(byte *)"__dtor"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__dtor"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar12 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar3 < *pbVar7;" (assignment_expression "bVar12 = *pbVar3 < *pbVar7" identifier = (binary_expression "*pbVar3 < *pbVar7" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar11 = *pbVar3 == *pbVar7;" (assignment_expression "bVar11 = *pbVar3 == *pbVar7" identifier = (binary_expression "*pbVar3 == *pbVar7" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar11 = (!bVar12 && !bVar11) == bVar12;" (assignment_expression "bVar11 = (!bVar12 && !bVar11) == bVar12" identifier = (binary_expression "(!bVar12 && !bVar11) == bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" ( (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar11) {\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n        string_append(decl,"~this");\n        return (char *)(local_3c + len);\n      }" { (expression_statement "string_append(decl,"~this");" (call_expression "string_append(decl,"~this")" identifier (argument_list "(decl,"~this")" ( identifier , (string_literal ""~this"" " string_content ") ))) ;) (return_statement "return (char *)(local_3c + len);" return (cast_expression "(char *)(local_3c + len)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + len)" ( (binary_expression "local_3c + len" identifier + identifier) ))) ;) })) (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"__initZ";" (assignment_expression "pbVar7 = (byte *)"__initZ"" identifier = (cast_expression "(byte *)"__initZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__initZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar13 = *pbVar3 < *pbVar7;\n        bVar11 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar3 < *pbVar7;" (assignment_expression "bVar13 = *pbVar3 < *pbVar7" identifier = (binary_expression "*pbVar3 < *pbVar7" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar11 = *pbVar3 == *pbVar7;" (assignment_expression "bVar11 = *pbVar3 == *pbVar7" identifier = (binary_expression "*pbVar3 == *pbVar7" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar11 = (!bVar13 && !bVar11) == bVar13;" (assignment_expression "bVar11 = (!bVar13 && !bVar11) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar11) == bVar13" (parenthesized_expression "(!bVar13 && !bVar11)" ( (binary_expression "!bVar13 && !bVar11" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar11) {\n        pcVar4 = "initializer for ";\n      }\n      else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n        pcVar4 = "initializer for ";\n      }" { (expression_statement "pcVar4 = "initializer for ";" (assignment_expression "pcVar4 = "initializer for "" identifier = (string_literal ""initializer for "" " string_content ")) ;) }) (else_clause "else {\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }" else (compound_statement "{\n        iVar10 = 7;\n        pbVar3 = local_3c;\n        pbVar7 = (byte *)"__vtblZ";\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar12 && !bVar11) != bVar12) goto _L493;\n        pcVar4 = "vtable for ";\n      }" { (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"__vtblZ";" (assignment_expression "pbVar7 = (byte *)"__vtblZ"" identifier = (cast_expression "(byte *)"__vtblZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__vtblZ"" " string_content "))) ;) (do_statement "do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        } while (bVar11);" do (compound_statement "{\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar12 = *pbVar3 < *pbVar7;\n          bVar11 = *pbVar3 == *pbVar7;\n          pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n          pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n        }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar3 < *pbVar7;" (assignment_expression "bVar12 = *pbVar3 < *pbVar7" identifier = (binary_expression "*pbVar3 < *pbVar7" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar11 = *pbVar3 == *pbVar7;" (assignment_expression "bVar11 = *pbVar3 == *pbVar7" identifier = (binary_expression "*pbVar3 == *pbVar7" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar11) != bVar12) goto _L493;" if (parenthesized_expression "((!bVar12 && !bVar11) != bVar12)" ( (binary_expression "(!bVar12 && !bVar11) != bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" ( (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (goto_statement "goto _L493;" goto statement_identifier ;)) (expression_statement "pcVar4 = "vtable for ";" (assignment_expression "pcVar4 = "vtable for "" identifier = (string_literal ""vtable for "" " string_content ")) ;) }))) (break_statement "break;" break ;)) (case_statement "case 7:\n      iVar10 = 8;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ClassZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ClassInfo for ";\n      break;" case number_literal : (expression_statement "iVar10 = 8;" (assignment_expression "iVar10 = 8" identifier = number_literal) ;) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"__ClassZ";" (assignment_expression "pbVar7 = (byte *)"__ClassZ"" identifier = (cast_expression "(byte *)"__ClassZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ClassZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar3 < *pbVar7;" (assignment_expression "bVar11 = *pbVar3 < *pbVar7" identifier = (binary_expression "*pbVar3 < *pbVar7" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar13 = *pbVar3 == *pbVar7;" (assignment_expression "bVar13 = *pbVar3 == *pbVar7" identifier = (binary_expression "*pbVar3 == *pbVar7" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar13) != bVar11) goto _L493;" if (parenthesized_expression "((!bVar11 && !bVar13) != bVar11)" ( (binary_expression "(!bVar11 && !bVar13) != bVar11" (parenthesized_expression "(!bVar11 && !bVar13)" ( (binary_expression "!bVar11 && !bVar13" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto _L493;" goto statement_identifier ;)) (expression_statement "pcVar4 = "ClassInfo for ";" (assignment_expression "pcVar4 = "ClassInfo for "" identifier = (string_literal ""ClassInfo for "" " string_content ")) ;) (break_statement "break;" break ;)) (case_statement "case 10:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }" case number_literal : (expression_statement "iVar10 = 0xd;" (assignment_expression "iVar10 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"__postblitMFZ";" (assignment_expression "pbVar7 = (byte *)"__postblitMFZ"" identifier = (cast_expression "(byte *)"__postblitMFZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__postblitMFZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar3 < *pbVar7;" (assignment_expression "bVar11 = *pbVar3 < *pbVar7" identifier = (binary_expression "*pbVar3 < *pbVar7" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar13 = *pbVar3 == *pbVar7;" (assignment_expression "bVar13 = *pbVar3 == *pbVar7" identifier = (binary_expression "*pbVar3 == *pbVar7" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar13) == bVar11) {\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }" if (parenthesized_expression "((!bVar11 && !bVar13) == bVar11)" ( (binary_expression "(!bVar11 && !bVar13) == bVar11" (parenthesized_expression "(!bVar11 && !bVar13)" ( (binary_expression "!bVar11 && !bVar13" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n        string_append(decl,"this(this)");\n        return (char *)(local_3c + len + 3);\n      }" { (expression_statement "string_append(decl,"this(this)");" (call_expression "string_append(decl,"this(this)")" identifier (argument_list "(decl,"this(this)")" ( identifier , (string_literal ""this(this)"" " string_content ") ))) ;) (return_statement "return (char *)(local_3c + len + 3);" return (cast_expression "(char *)(local_3c + len + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + len + 3)" ( (binary_expression "local_3c + len + 3" (binary_expression "local_3c + len" identifier + identifier) + number_literal) ))) ;) }))) (case_statement "default:\n_L493:\n      string_appendn(decl,(char *)local_3c,n);\n      return (char *)(local_3c + len);" default : (labeled_statement "_L493:\n      string_appendn(decl,(char *)local_3c,n);" statement_identifier : (expression_statement "string_appendn(decl,(char *)local_3c,n);" (call_expression "string_appendn(decl,(char *)local_3c,n)" identifier (argument_list "(decl,(char *)local_3c,n)" ( identifier , (cast_expression "(char *)local_3c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (return_statement "return (char *)(local_3c + len);" return (cast_expression "(char *)(local_3c + len)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + len)" ( (binary_expression "local_3c + len" identifier + identifier) ))) ;)) (case_statement "case 0xb:\n      iVar10 = 0xc;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "Interface for ";\n      break;" case number_literal : (expression_statement "iVar10 = 0xc;" (assignment_expression "iVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"__InterfaceZ";" (assignment_expression "pbVar7 = (byte *)"__InterfaceZ"" identifier = (cast_expression "(byte *)"__InterfaceZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__InterfaceZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar3 < *pbVar7;" (assignment_expression "bVar11 = *pbVar3 < *pbVar7" identifier = (binary_expression "*pbVar3 < *pbVar7" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar13 = *pbVar3 == *pbVar7;" (assignment_expression "bVar13 = *pbVar3 == *pbVar7" identifier = (binary_expression "*pbVar3 == *pbVar7" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar13) != bVar11) goto _L493;" if (parenthesized_expression "((!bVar11 && !bVar13) != bVar11)" ( (binary_expression "(!bVar11 && !bVar13) != bVar11" (parenthesized_expression "(!bVar11 && !bVar13)" ( (binary_expression "!bVar11 && !bVar13" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto _L493;" goto statement_identifier ;)) (expression_statement "pcVar4 = "Interface for ";" (assignment_expression "pcVar4 = "Interface for "" identifier = (string_literal ""Interface for "" " string_content ")) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\n      iVar10 = 0xd;\n      pbVar3 = local_3c;\n      pbVar7 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);\n      if ((!bVar11 && !bVar13) != bVar11) goto _L493;\n      pcVar4 = "ModuleInfo for ";" case number_literal : (expression_statement "iVar10 = 0xd;" (assignment_expression "iVar10 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar3 = local_3c;" (assignment_expression "pbVar3 = local_3c" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"__ModuleInfoZ";" (assignment_expression "pbVar7 = (byte *)"__ModuleInfoZ"" identifier = (cast_expression "(byte *)"__ModuleInfoZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ModuleInfoZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar11 = *pbVar3 < *pbVar7;\n        bVar13 = *pbVar3 == *pbVar7;\n        pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar3 < *pbVar7;" (assignment_expression "bVar11 = *pbVar3 < *pbVar7" identifier = (binary_expression "*pbVar3 < *pbVar7" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar13 = *pbVar3 == *pbVar7;" (assignment_expression "bVar13 = *pbVar3 == *pbVar7" identifier = (binary_expression "*pbVar3 == *pbVar7" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar13) != bVar11) goto _L493;" if (parenthesized_expression "((!bVar11 && !bVar13) != bVar11)" ( (binary_expression "(!bVar11 && !bVar13) != bVar11" (parenthesized_expression "(!bVar11 && !bVar13)" ( (binary_expression "!bVar11 && !bVar13" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (goto_statement "goto _L493;" goto statement_identifier ;)) (expression_statement "pcVar4 = "ModuleInfo for ";" (assignment_expression "pcVar4 = "ModuleInfo for "" identifier = (string_literal ""ModuleInfo for "" " string_content ")) ;)) })) (expression_statement "string_prepend(decl,pcVar4);" (call_expression "string_prepend(decl,pcVar4)" identifier (argument_list "(decl,pcVar4)" ( identifier , identifier ))) ;) (expression_statement "pcVar4 = decl->b;" (assignment_expression "pcVar4 = decl->b" identifier = (field_expression "decl->b" identifier -> field_identifier)) ;) (expression_statement "pcVar6 = decl->p + (-1 - (int)pcVar4);" (assignment_expression "pcVar6 = decl->p + (-1 - (int)pcVar4)" identifier = (binary_expression "decl->p + (-1 - (int)pcVar4)" (field_expression "decl->p" identifier -> field_identifier) + (parenthesized_expression "(-1 - (int)pcVar4)" ( (binary_expression "-1 - (int)pcVar4" number_literal - (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (pcVar4 == decl->p) {\n      pcVar6 = (char *)0xffffffff;\n    }" if (parenthesized_expression "(pcVar4 == decl->p)" ( (binary_expression "pcVar4 == decl->p" identifier == (field_expression "decl->p" identifier -> field_identifier)) )) (compound_statement "{\n      pcVar6 = (char *)0xffffffff;\n    }" { (expression_statement "pcVar6 = (char *)0xffffffff;" (assignment_expression "pcVar6 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "local_3c = local_3c + len;" (assignment_expression "local_3c = local_3c + len" identifier = (binary_expression "local_3c + len" identifier + identifier)) ;) (expression_statement "decl->p = pcVar4 + (int)pcVar6;" (assignment_expression "decl->p = pcVar4 + (int)pcVar6" (field_expression "decl->p" identifier -> field_identifier) = (binary_expression "pcVar4 + (int)pcVar6" identifier + (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (return_statement "return (char *)local_3c;" return (cast_expression "(char *)local_3c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })))
(translation_unit "byte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)\n\n{\n  size_t sVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  int iVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  uint local_44;\n  byte *local_3c;\n  uint local_2c;\n  \n  bVar12 = 0;\n  local_3c = (byte *)FUN_0017b740();\n  if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }\n  return local_3c;\n}\n\n" (ERROR "byte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" (binary_expression "byte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" identifier (argument_list "(int *param_1,undefined4 param_2,int param_3)" ( (binary_expression "int *param_1" identifier * identifier) , identifier (ERROR "param_2" identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  size_t sVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  int iVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  uint local_44;\n  byte *local_3c;\n  uint local_2c;\n  \n  bVar12 = 0;\n  local_3c = (byte *)FUN_0017b740();\n  if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }\n  return local_3c;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "byte *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "local_3c = (byte *)FUN_0017b740();" (assignment_expression "local_3c = (byte *)FUN_0017b740()" identifier = (cast_expression "(byte *)FUN_0017b740()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b740()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" if (parenthesized_expression "((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0))" ( (binary_expression "(local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)" (parenthesized_expression "(local_3c == (byte *)0x0)" ( (binary_expression "local_3c == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_44 = local_2c, local_2c == 0)" ( (comma_expression "local_44 = local_2c, local_2c == 0" (assignment_expression "local_44 = local_2c" identifier = identifier) , (binary_expression "local_2c == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }" { (labeled_statement "LAB_0017d320:\n    local_3c = (byte *)0x0;" statement_identifier : (expression_statement "local_3c = (byte *)0x0;" (assignment_expression "local_3c = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" else (compound_statement "{\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" { (if_statement "if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }" if (parenthesized_expression "(param_3 == 4)" ( (binary_expression "param_3 == 4" identifier == number_literal) )) (compound_statement "{\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (if_statement "if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }" if (parenthesized_expression "(*param_1 != param_1[1])" ( (binary_expression "*param_1 != param_1[1]" (pointer_expression "*param_1" * identifier) != (subscript_expression "param_1[1]" identifier [ number_literal ])) )) (compound_statement "{\n        iVar8 = param_1[1] - *param_1;\n      }" { (expression_statement "iVar8 = param_1[1] - *param_1;" (assignment_expression "iVar8 = param_1[1] - *param_1" identifier = (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) - (pointer_expression "*param_1" * identifier))) ;) })) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (labeled_statement "LAB_0017d3b0:\n      pbVar5 = pbVar2;" statement_identifier : (expression_statement "pbVar5 = pbVar2;" (assignment_expression "pbVar5 = pbVar2" identifier = identifier) ;)) (expression_statement "bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;" (assignment_expression "bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0" identifier = (binary_expression "((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)*pbVar5 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)*pbVar5 * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)*pbVar5 * 2" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) == number_literal)) ;) (expression_statement "pbVar2 = pbVar5;" (assignment_expression "pbVar2 = pbVar5" identifier = identifier) ;) (if_statement "if (!bVar9) goto LAB_0017d46d;" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (goto_statement "goto LAB_0017d46d;" goto statement_identifier ;)) (labeled_statement "LAB_0017d3c2:\n      bVar11 = false;" statement_identifier : (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;)) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "pbVar6 = pbVar2;" (assignment_expression "pbVar6 = pbVar2" identifier = identifier) ;) (expression_statement "pbVar7 = &DAT_00239751;" (assignment_expression "pbVar7 = &DAT_00239751" identifier = (pointer_expression "&DAT_00239751" & identifier)) ;) (do_statement "do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }" if (parenthesized_expression "((!bVar11 && !bVar9) == bVar11)" ( (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" ( (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier) )) (compound_statement "{\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }" { (expression_statement "pbVar2 = (byte *)FUN_0017d080();" (assignment_expression "pbVar2 = (byte *)FUN_0017d080()" identifier = (cast_expression "(byte *)FUN_0017d080()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d080()" identifier (argument_list "()" ( ))))) ;) (goto_statement "goto LAB_0017d47f;" goto statement_identifier ;) })) (do_statement "do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );" do (compound_statement "{\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      }" { (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;) (if_statement "if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }" if (parenthesized_expression "((int)pbVar2 - (int)pbVar5 == local_44)" ( (binary_expression "(int)pbVar2 - (int)pbVar5 == local_44" (binary_expression "(int)pbVar2 - (int)pbVar5" (cast_expression "(int)pbVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) == identifier) )) (compound_statement "{\n          return pbVar2;\n        }" { (return_statement "return pbVar2;" return identifier ;) })) (do_statement "do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);" do (compound_statement "{\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        }" { (expression_statement "pbVar5 = local_3c;" (assignment_expression "pbVar5 = local_3c" identifier = identifier) ;) (expression_statement "local_44 = (int)local_44 / 10;" (assignment_expression "local_44 = (int)local_44 / 10" identifier = (binary_expression "(int)local_44 / 10" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) / number_literal)) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar4 = iVar8 - (param_1[1] - iVar3);" (assignment_expression "iVar4 = iVar8 - (param_1[1] - iVar3)" identifier = (binary_expression "iVar8 - (param_1[1] - iVar3)" identifier - (parenthesized_expression "(param_1[1] - iVar3)" ( (binary_expression "param_1[1] - iVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) - identifier) )))) ;) (if_statement "if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }" if (parenthesized_expression "(param_1[1] == iVar3)" ( (binary_expression "param_1[1] == iVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n            iVar4 = iVar8;\n          }" { (expression_statement "iVar4 = iVar8;" (assignment_expression "iVar4 = iVar8" identifier = identifier) ;) })) (if_statement "if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n            param_1[1] = iVar3 + iVar8;\n          }" { (expression_statement "param_1[1] = iVar3 + iVar8;" (assignment_expression "param_1[1] = iVar3 + iVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar3 + iVar8" identifier + identifier)) ;) })) (expression_statement "pbVar2 = pbVar6 + -1;" (assignment_expression "pbVar2 = pbVar6 + -1" identifier = (binary_expression "pbVar6 + -1" identifier + number_literal)) ;) (if_statement "if (local_3c == (byte *)0x0) goto LAB_0017d320;" if (parenthesized_expression "(local_3c == (byte *)0x0)" ( (binary_expression "local_3c == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) (if_statement "if (local_44 != 0) goto LAB_0017d3b0;" if (parenthesized_expression "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017d3b0;" goto statement_identifier ;)) (expression_statement "local_44 = local_2c;" (assignment_expression "local_44 = local_2c" identifier = identifier) ;) (expression_statement "local_3c = (byte *)0x0;" (assignment_expression "local_3c = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;" (assignment_expression "bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0" identifier = (binary_expression "((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)*pbVar2 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)*pbVar2 * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)*pbVar2 * 2" (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal) ]) & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) goto LAB_0017d3c2;" if (parenthesized_expression "(bVar9)" ( identifier )) (goto_statement "goto LAB_0017d3c2;" goto statement_identifier ;)) (labeled_statement "LAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();" statement_identifier : (expression_statement "pbVar2 = (byte *)FUN_0017d830();" (assignment_expression "pbVar2 = (byte *)FUN_0017d830()" identifier = (cast_expression "(byte *)FUN_0017d830()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d830()" identifier (argument_list "()" ( ))))) ;)) (labeled_statement "LAB_0017d47f:\n          pbVar6 = pbVar5;" statement_identifier : (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;)) }) while (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "sVar1 = strlen((char *)local_3c);" (assignment_expression "sVar1 = strlen((char *)local_3c)" identifier = (call_expression "strlen((char *)local_3c)" identifier (argument_list "((char *)local_3c)" ( (cast_expression "(char *)local_3c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sVar1 < local_2c) goto LAB_0017d320;" if (parenthesized_expression "(sVar1 < local_2c)" ( (binary_expression "sVar1 < local_2c" identifier < identifier) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) (if_statement "if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }" if (parenthesized_expression "((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2))" ( (binary_expression "(((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)" (parenthesized_expression "(((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f))" ( (binary_expression "((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)" (parenthesized_expression "((4 < (int)local_2c) && (*local_3c == 0x5f))" ( (binary_expression "(4 < (int)local_2c) && (*local_3c == 0x5f)" (parenthesized_expression "(4 < (int)local_2c)" ( (binary_expression "4 < (int)local_2c" number_literal < (cast_expression "(int)local_2c" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*local_3c == 0x5f)" ( (binary_expression "*local_3c == 0x5f" (pointer_expression "*local_3c" * identifier) == number_literal) ))) )) && (parenthesized_expression "(local_3c[1] == 0x5f)" ( (binary_expression "local_3c[1] == 0x5f" (subscript_expression "local_3c[1]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "((byte)(local_3c[2] + 0xac) < 2)" ( (binary_expression "(byte)(local_3c[2] + 0xac) < 2" (call_expression "(byte)(local_3c[2] + 0xac)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_3c[2] + 0xac)" ( (binary_expression "local_3c[2] + 0xac" (subscript_expression "local_3c[2]" identifier [ number_literal ]) + number_literal) ))) < number_literal) ))) )) (compound_statement "{\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }" { (if_statement "if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }" if (parenthesized_expression "((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30))" ( (binary_expression "(((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)" (parenthesized_expression "(((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0)" ( (binary_expression "((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0" (parenthesized_expression "((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4)" ( (binary_expression "(&DAT_0023a160)[(uint)local_3c[3] * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)local_3c[3] * 2]" (parenthesized_expression "(&DAT_0023a160)" ( (pointer_expression "&DAT_0023a160" & identifier) )) [ (binary_expression "(uint)local_3c[3] * 2" (cast_expression "(uint)local_3c[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_3c[3]" identifier [ number_literal ])) * number_literal) ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_3c[3] != 0x30)" ( (binary_expression "local_3c[3] != 0x30" (subscript_expression "local_3c[3]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }" { (expression_statement "pbVar2 = (byte *)FUN_0017d280();" (assignment_expression "pbVar2 = (byte *)FUN_0017d280()" identifier = (cast_expression "(byte *)FUN_0017d280()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d280()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (if_statement "if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" if (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0017d304:\n          FUN_0017b850();\n        }" { (labeled_statement "LAB_0017d304:\n          FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" else (compound_statement "{\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" { (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" identifier = (pointer_expression "*pbVar2" * identifier)) ;) (if_statement "if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0017d80a:\n            FUN_0017b850();\n          }" { (labeled_statement "LAB_0017d80a:\n            FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" else (compound_statement "{\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" { (if_statement "if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }" if (parenthesized_expression "(bVar12 != 0x5a)" ( (binary_expression "bVar12 != 0x5a" identifier != number_literal) )) (compound_statement "{\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }" { (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (while_statement "while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }" { (if_statement "if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }" if (parenthesized_expression "(bVar12 == 0x48)" ( (binary_expression "bVar12 == 0x48" identifier == number_literal) )) (compound_statement "{\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }" { (expression_statement "bVar12 = pbVar2[1];" (assignment_expression "bVar12 = pbVar2[1]" identifier = (subscript_expression "pbVar2[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" identifier = (binary_expression "pbVar2 + 1" identifier + number_literal)) ;) })) (if_statement "if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" if (parenthesized_expression "(bVar12 == 0x54)" ( (binary_expression "bVar12 == 0x54" identifier == number_literal) )) (compound_statement "{\n                  pbVar2 = (byte *)FUN_0017c870();\n                }" { (expression_statement "pbVar2 = (byte *)FUN_0017c870();" (assignment_expression "pbVar2 = (byte *)FUN_0017c870()" identifier = (cast_expression "(byte *)FUN_0017c870()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))))) ;) }) (else_clause "else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" else (if_statement "if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" if (parenthesized_expression "(bVar12 == 0x56)" ( (binary_expression "bVar12 == 0x56" identifier == number_literal) )) (compound_statement "{\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }" { (expression_statement "bVar12 = pbVar2[1];" (assignment_expression "bVar12 = pbVar2[1]" identifier = (subscript_expression "pbVar2[1]" identifier [ number_literal ])) ;) (expression_statement "FUN_0017c870();" (call_expression "FUN_0017c870()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0017b7c0();" (call_expression "FUN_0017b7c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "DAT_00000000 = 0;" (assignment_expression "DAT_00000000 = 0" identifier = number_literal) ;) (expression_statement "pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);" (assignment_expression "pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12)" identifier = (cast_expression "(byte *)FUN_0017c110((int)(char)bVar12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017c110((int)(char)bVar12)" identifier (argument_list "((int)(char)bVar12)" ( (cast_expression "(int)(char)bVar12" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ))))) ;) }) (else_clause "else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" else (compound_statement "{\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" { (if_statement "if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }" if (parenthesized_expression "(bVar12 != 0x53)" ( (binary_expression "bVar12 != 0x53" identifier != number_literal) )) (compound_statement "{\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }" { (expression_statement "pbVar2 = (byte *)0x0;" (assignment_expression "pbVar2 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0017d55b;" goto statement_identifier ;) })) (expression_statement "pbVar2 = (byte *)FUN_0017d280();" (assignment_expression "pbVar2 = (byte *)FUN_0017d280()" identifier = (cast_expression "(byte *)FUN_0017d280()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d280()" identifier (argument_list "()" ( ))))) ;) }))))) (if_statement "if (pbVar2 == (byte *)0x0) goto LAB_0017d304;" if (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d304;" goto statement_identifier ;)) (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" identifier = (pointer_expression "*pbVar2" * identifier)) ;) (if_statement "if (bVar12 == 0) goto LAB_0017d80a;" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0017d80a;" goto statement_identifier ;)) (if_statement "if (bVar12 == 0x5a) break;" if (parenthesized_expression "(bVar12 == 0x5a)" ( (binary_expression "bVar12 == 0x5a" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" identifier = (pointer_expression "*pbVar2" * identifier)) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) })) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" identifier = (binary_expression "pbVar2 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0017d55b:\n            FUN_0017b850();" statement_identifier : (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;)) (if_statement "if (pbVar2 == (byte *)0x0) goto LAB_0017d320;" if (parenthesized_expression "(pbVar2 == (byte *)0x0)" ( (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;)) }))) (if_statement "if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }" if (parenthesized_expression "(local_2c == (int)pbVar2 - (int)local_3c)" ( (binary_expression "local_2c == (int)pbVar2 - (int)local_3c" identifier == (binary_expression "(int)pbVar2 - (int)local_3c" (cast_expression "(int)pbVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n            return pbVar2;\n          }" { (return_statement "return pbVar2;" return identifier ;) })) }))) })) (goto_statement "goto LAB_0017d320;" goto statement_identifier ;) })) (if_statement "if (6 < local_2c - 6) goto LAB_0017d350;" if (parenthesized_expression "(6 < local_2c - 6)" ( (binary_expression "6 < local_2c - 6" number_literal < (binary_expression "local_2c - 6" identifier - number_literal)) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;)) (expression_statement "bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);" (assignment_expression "bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" identifier = (binary_expression "0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" number_literal < (pointer_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" * (cast_expression "(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00239b20 + (local_2c - 6) * 4)" ( (binary_expression "&DAT_00239b20 + (local_2c - 6) * 4" (pointer_expression "&DAT_00239b20" & identifier) + (binary_expression "(local_2c - 6) * 4" (parenthesized_expression "(local_2c - 6)" ( (binary_expression "local_2c - 6" identifier - number_literal) )) * number_literal)) )))))) ;) (expression_statement "bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;" (assignment_expression "bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000" identifier = (binary_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000" (pointer_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" * (cast_expression "(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00239b20 + (local_2c - 6) * 4)" ( (binary_expression "&DAT_00239b20 + (local_2c - 6) * 4" (pointer_expression "&DAT_00239b20" & identifier) + (binary_expression "(local_2c - 6) * 4" (parenthesized_expression "(local_2c - 6)" ( (binary_expression "local_2c - 6" identifier - number_literal) )) * number_literal)) )))) == number_literal)) ;) (switch_statement "switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }" switch (parenthesized_expression "(local_2c)" ( identifier )) (compound_statement "{\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }" { (case_statement "case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;" case number_literal : (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__ctor";" (assignment_expression "pbVar5 = (byte *)"__ctor"" identifier = (cast_expression "(byte *)"__ctor"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ctor"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar9 && !bVar11) == bVar9;" (assignment_expression "bVar9 = (!bVar9 && !bVar11) == bVar9" identifier = (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return local_3c + local_2c;" return (binary_expression "local_3c + local_2c" identifier + identifier) ;) })) (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__dtor";" (assignment_expression "pbVar5 = (byte *)"__dtor"" identifier = (cast_expression "(byte *)"__dtor"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__dtor"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar2 < *pbVar5;" (assignment_expression "bVar10 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" identifier = (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return local_3c + local_2c;" return (binary_expression "local_3c + local_2c" identifier + identifier) ;) })) (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__initZ";" (assignment_expression "pbVar5 = (byte *)"__initZ"" identifier = (cast_expression "(byte *)"__initZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__initZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar2 < *pbVar5;" (assignment_expression "bVar11 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" ( (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }" { (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = &UNK_00239781;" (assignment_expression "pbVar5 = &UNK_00239781" identifier = (pointer_expression "&UNK_00239781" & identifier)) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar2 < *pbVar5;" (assignment_expression "bVar10 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;" if (parenthesized_expression "((!bVar10 && !bVar9) != bVar10)" ( (binary_expression "(!bVar10 && !bVar9) != bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;)) })) (break_statement "break;" break ;)) (case_statement "case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;" case number_literal : (expression_statement "iVar8 = 8;" (assignment_expression "iVar8 = 8" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__ClassZ";" (assignment_expression "pbVar5 = (byte *)"__ClassZ"" identifier = (cast_expression "(byte *)"__ClassZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ClassZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" if (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" ( (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;)) (break_statement "break;" break ;)) (case_statement "case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" case number_literal : (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__postblitMFZ";" (assignment_expression "pbVar5 = (byte *)"__postblitMFZ"" identifier = (cast_expression "(byte *)"__postblitMFZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__postblitMFZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" if (parenthesized_expression "((!bVar9 && !bVar11) == bVar9)" ( (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" { (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" identifier (argument_list "()" ( ))) ;) (return_statement "return local_3c + local_2c + 3;" return (binary_expression "local_3c + local_2c + 3" (binary_expression "local_3c + local_2c" identifier + identifier) + number_literal) ;) }))) (case_statement "default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;" default : (labeled_statement "LAB_0017d350:\n      FUN_0017bbd0();" statement_identifier : (expression_statement "FUN_0017bbd0();" (call_expression "FUN_0017bbd0()" identifier (argument_list "()" ( ))) ;)) (return_statement "return local_3c + local_2c;" return (binary_expression "local_3c + local_2c" identifier + identifier) ;)) (case_statement "case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;" case number_literal : (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__InterfaceZ";" (assignment_expression "pbVar5 = (byte *)"__InterfaceZ"" identifier = (cast_expression "(byte *)"__InterfaceZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__InterfaceZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" if (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" ( (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;)) (break_statement "break;" break ;)) (case_statement "case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" case number_literal : (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"__ModuleInfoZ";" (assignment_expression "pbVar5 = (byte *)"__ModuleInfoZ"" identifier = (cast_expression "(byte *)"__ModuleInfoZ"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__ModuleInfoZ"" " string_content "))) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" identifier = (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" identifier = (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" if (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" ( (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0017d350;" goto statement_identifier ;))) })) (expression_statement "FUN_0017bb50();" (call_expression "FUN_0017bb50()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar3 = (param_1[1] - iVar8) + -1;" (assignment_expression "iVar3 = (param_1[1] - iVar8) + -1" identifier = (binary_expression "(param_1[1] - iVar8) + -1" (parenthesized_expression "(param_1[1] - iVar8)" ( (binary_expression "param_1[1] - iVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) - identifier) )) + number_literal)) ;) (if_statement "if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }" if (parenthesized_expression "(iVar8 == param_1[1])" ( (binary_expression "iVar8 == param_1[1]" identifier == (subscript_expression "param_1[1]" identifier [ number_literal ])) )) (compound_statement "{\n      iVar3 = -1;\n    }" { (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" identifier = number_literal) ;) })) (expression_statement "local_3c = local_3c + local_2c;" (assignment_expression "local_3c = local_3c + local_2c" identifier = (binary_expression "local_3c + local_2c" identifier + identifier)) ;) (expression_statement "param_1[1] = iVar8 + iVar3;" (assignment_expression "param_1[1] = iVar8 + iVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar8 + iVar3" identifier + identifier)) ;) }))) (return_statement "return local_3c;" return identifier ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) , IDENT (ERROR IDENT) , (ERROR IDENT) IDENT ))))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT) ]) & LIT) )) == LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (goto_statement goto statement_identifier ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT) ]) & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) }) while (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) < LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT) ]) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) }))))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) }))) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) )))) == LIT)) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (binary_expression IDENT + IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (binary_expression IDENT + IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (goto_statement goto statement_identifier ;)) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (binary_expression (binary_expression IDENT + IDENT) + LIT) ;) }))) (case_statement default : (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (return_statement return (binary_expression IDENT + IDENT) ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (goto_statement goto statement_identifier ;))) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) }))) (return_statement return IDENT ;) }))
(ERROR "byte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" (binary_expression "byte * __regparm3 FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" (identifier "byte") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_0017d280(int *param_1,undefined4 param_2,int param_3)" (identifier "FUN_0017d280") (argument_list "(int *param_1,undefined4 param_2,int param_3)" (( "(") (binary_expression "int *param_1" (identifier "int") (* "*") (identifier "param_1")) (, ",") (identifier "undefined4") (ERROR "param_2" (identifier "param_2")) (, ",") (ERROR "int" (identifier "int")) (identifier "param_3") () ")"))))) (compound_statement "{\n  size_t sVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  int iVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  uint local_44;\n  byte *local_3c;\n  uint local_2c;\n  \n  bVar12 = 0;\n  local_3c = (byte *)FUN_0017b740();\n  if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }\n  return local_3c;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "byte *local_3c;" (type_identifier "byte") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = (byte *)FUN_0017b740();" (assignment_expression "local_3c = (byte *)FUN_0017b740()" (identifier "local_3c") (= "=") (cast_expression "(byte *)FUN_0017b740()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017b740()" (identifier "FUN_0017b740") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }\n  else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" (if "if") (parenthesized_expression "((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0))" (( "(") (binary_expression "(local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)" (parenthesized_expression "(local_3c == (byte *)0x0)" (( "(") (binary_expression "local_3c == (byte *)0x0" (identifier "local_3c") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(local_44 = local_2c, local_2c == 0)" (( "(") (comma_expression "local_44 = local_2c, local_2c == 0" (assignment_expression "local_44 = local_2c" (identifier "local_44") (= "=") (identifier "local_2c")) (, ",") (binary_expression "local_2c == 0" (identifier "local_2c") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_0017d320:\n    local_3c = (byte *)0x0;\n  }" ({ "{") (labeled_statement "LAB_0017d320:\n    local_3c = (byte *)0x0;" (statement_identifier "LAB_0017d320") (: ":") (expression_statement "local_3c = (byte *)0x0;" (assignment_expression "local_3c = (byte *)0x0" (identifier "local_3c") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")) (else_clause "else {\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" (else "else") (compound_statement "{\n    if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }\n    sVar1 = strlen((char *)local_3c);\n    if (sVar1 < local_2c) goto LAB_0017d320;\n    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }\n    if (6 < local_2c - 6) goto LAB_0017d350;\n    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);\n    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;\n    switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }\n    FUN_0017bb50();\n    iVar8 = *param_1;\n    iVar3 = (param_1[1] - iVar8) + -1;\n    if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }\n    local_3c = local_3c + local_2c;\n    param_1[1] = iVar8 + iVar3;\n  }" ({ "{") (if_statement "if (param_3 == 4) {\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }" (if "if") (parenthesized_expression "(param_3 == 4)" (( "(") (binary_expression "param_3 == 4" (identifier "param_3") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n      iVar8 = 0;\n      if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }\n      pbVar2 = local_3c;\nLAB_0017d3b0:\n      pbVar5 = pbVar2;\n      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;\n      pbVar2 = pbVar5;\n      if (!bVar9) goto LAB_0017d46d;\nLAB_0017d3c2:\n      bVar11 = false;\n      iVar3 = 2;\n      pbVar6 = pbVar2;\n      pbVar7 = &DAT_00239751;\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }\n      do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );\n    }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*param_1 != param_1[1]) {\n        iVar8 = param_1[1] - *param_1;\n      }" (if "if") (parenthesized_expression "(*param_1 != param_1[1])" (( "(") (binary_expression "*param_1 != param_1[1]" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n        iVar8 = param_1[1] - *param_1;\n      }" ({ "{") (expression_statement "iVar8 = param_1[1] - *param_1;" (assignment_expression "iVar8 = param_1[1] - *param_1" (identifier "iVar8") (= "=") (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}"))) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (labeled_statement "LAB_0017d3b0:\n      pbVar5 = pbVar2;" (statement_identifier "LAB_0017d3b0") (: ":") (expression_statement "pbVar5 = pbVar2;" (assignment_expression "pbVar5 = pbVar2" (identifier "pbVar5") (= "=") (identifier "pbVar2")) (; ";"))) (expression_statement "bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;" (assignment_expression "bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0" (identifier "bVar9") (= "=") (binary_expression "((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4)" (( "(") (binary_expression "(&DAT_0023a160)[(uint)*pbVar5 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)*pbVar5 * 2]" (parenthesized_expression "(&DAT_0023a160)" (( "(") (pointer_expression "&DAT_0023a160" (& "&") (identifier "DAT_0023a160")) () ")")) ([ "[") (binary_expression "(uint)*pbVar5 * 2" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar5")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "pbVar2 = pbVar5;" (assignment_expression "pbVar2 = pbVar5" (identifier "pbVar2") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if (!bVar9) goto LAB_0017d46d;" (if "if") (parenthesized_expression "(!bVar9)" (( "(") (unary_expression "!bVar9" (! "!") (identifier "bVar9")) () ")")) (goto_statement "goto LAB_0017d46d;" (goto "goto") (statement_identifier "LAB_0017d46d") (; ";"))) (labeled_statement "LAB_0017d3c2:\n      bVar11 = false;" (statement_identifier "LAB_0017d3c2") (: ":") (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";"))) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" (identifier "iVar3") (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar6 = pbVar2;" (assignment_expression "pbVar6 = pbVar2" (identifier "pbVar6") (= "=") (identifier "pbVar2")) (; ";")) (expression_statement "pbVar7 = &DAT_00239751;" (assignment_expression "pbVar7 = &DAT_00239751" (identifier "pbVar7") (= "=") (pointer_expression "&DAT_00239751" (& "&") (identifier "DAT_00239751"))) (; ";")) (do_statement "do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" (do "do") (compound_statement "{\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar11 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar3 == 0) break;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" (identifier "bVar11") (= "=") (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar12 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar12 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (if_statement "if ((!bVar11 && !bVar9) == bVar11) {\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }" (if "if") (parenthesized_expression "((!bVar11 && !bVar9) == bVar11)" (( "(") (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" (( "(") (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" (! "!") (identifier "bVar11")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar11")) () ")")) (compound_statement "{\n        pbVar2 = (byte *)FUN_0017d080();\n        goto LAB_0017d47f;\n      }" ({ "{") (expression_statement "pbVar2 = (byte *)FUN_0017d080();" (assignment_expression "pbVar2 = (byte *)FUN_0017d080()" (identifier "pbVar2") (= "=") (cast_expression "(byte *)FUN_0017d080()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017d080()" (identifier "FUN_0017d080") (argument_list "()" (( "(") () ")"))))) (; ";")) (goto_statement "goto LAB_0017d47f;" (goto "goto") (statement_identifier "LAB_0017d47f") (; ";")) (} "}"))) (do_statement "do {\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      } while( true );" (do "do") (compound_statement "{\n        pbVar6 = pbVar5;\n        if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }\n        do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);\n      }" ({ "{") (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" (identifier "pbVar6") (= "=") (identifier "pbVar5")) (; ";")) (if_statement "if ((int)pbVar2 - (int)pbVar5 == local_44) {\n          return pbVar2;\n        }" (if "if") (parenthesized_expression "((int)pbVar2 - (int)pbVar5 == local_44)" (( "(") (binary_expression "(int)pbVar2 - (int)pbVar5 == local_44" (binary_expression "(int)pbVar2 - (int)pbVar5" (cast_expression "(int)pbVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar2")) (- "-") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5"))) (== "==") (identifier "local_44")) () ")")) (compound_statement "{\n          return pbVar2;\n        }" ({ "{") (return_statement "return pbVar2;" (return "return") (identifier "pbVar2") (; ";")) (} "}"))) (do_statement "do {\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        } while (pbVar2 == (byte *)0x0);" (do "do") (compound_statement "{\n          pbVar5 = local_3c;\n          local_44 = (int)local_44 / 10;\n          iVar3 = *param_1;\n          iVar4 = iVar8 - (param_1[1] - iVar3);\n          if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }\n          if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }\n          pbVar2 = pbVar6 + -1;\n          if (local_3c == (byte *)0x0) goto LAB_0017d320;\n          if (local_44 != 0) goto LAB_0017d3b0;\n          local_44 = local_2c;\n          local_3c = (byte *)0x0;\n          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;\n          if (bVar9) goto LAB_0017d3c2;\nLAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();\nLAB_0017d47f:\n          pbVar6 = pbVar5;\n        }" ({ "{") (expression_statement "pbVar5 = local_3c;" (assignment_expression "pbVar5 = local_3c" (identifier "pbVar5") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "local_44 = (int)local_44 / 10;" (assignment_expression "local_44 = (int)local_44 / 10" (identifier "local_44") (= "=") (binary_expression "(int)local_44 / 10" (cast_expression "(int)local_44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_44")) (/ "/") (number_literal "10"))) (; ";")) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" (identifier "iVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar4 = iVar8 - (param_1[1] - iVar3);" (assignment_expression "iVar4 = iVar8 - (param_1[1] - iVar3)" (identifier "iVar4") (= "=") (binary_expression "iVar8 - (param_1[1] - iVar3)" (identifier "iVar8") (- "-") (parenthesized_expression "(param_1[1] - iVar3)" (( "(") (binary_expression "param_1[1] - iVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "iVar3")) () ")")))) (; ";")) (if_statement "if (param_1[1] == iVar3) {\n            iVar4 = iVar8;\n          }" (if "if") (parenthesized_expression "(param_1[1] == iVar3)" (( "(") (binary_expression "param_1[1] == iVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (identifier "iVar3")) () ")")) (compound_statement "{\n            iVar4 = iVar8;\n          }" ({ "{") (expression_statement "iVar4 = iVar8;" (assignment_expression "iVar4 = iVar8" (identifier "iVar4") (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (if_statement "if (iVar4 < 0) {\n            param_1[1] = iVar3 + iVar8;\n          }" (if "if") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            param_1[1] = iVar3 + iVar8;\n          }" ({ "{") (expression_statement "param_1[1] = iVar3 + iVar8;" (assignment_expression "param_1[1] = iVar3 + iVar8" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar3 + iVar8" (identifier "iVar3") (+ "+") (identifier "iVar8"))) (; ";")) (} "}"))) (expression_statement "pbVar2 = pbVar6 + -1;" (assignment_expression "pbVar2 = pbVar6 + -1" (identifier "pbVar2") (= "=") (binary_expression "pbVar6 + -1" (identifier "pbVar6") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (local_3c == (byte *)0x0) goto LAB_0017d320;" (if "if") (parenthesized_expression "(local_3c == (byte *)0x0)" (( "(") (binary_expression "local_3c == (byte *)0x0" (identifier "local_3c") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0017d320;" (goto "goto") (statement_identifier "LAB_0017d320") (; ";"))) (if_statement "if (local_44 != 0) goto LAB_0017d3b0;" (if "if") (parenthesized_expression "(local_44 != 0)" (( "(") (binary_expression "local_44 != 0" (identifier "local_44") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0017d3b0;" (goto "goto") (statement_identifier "LAB_0017d3b0") (; ";"))) (expression_statement "local_44 = local_2c;" (assignment_expression "local_44 = local_2c" (identifier "local_44") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "local_3c = (byte *)0x0;" (assignment_expression "local_3c = (byte *)0x0" (identifier "local_3c") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;" (assignment_expression "bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0" (identifier "bVar9") (= "=") (binary_expression "((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4)" (( "(") (binary_expression "(&DAT_0023a160)[(uint)*pbVar2 * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)*pbVar2 * 2]" (parenthesized_expression "(&DAT_0023a160)" (( "(") (pointer_expression "&DAT_0023a160" (& "&") (identifier "DAT_0023a160")) () ")")) ([ "[") (binary_expression "(uint)*pbVar2 * 2" (binary_expression "(uint)*pbVar2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar2")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar9) goto LAB_0017d3c2;" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (goto_statement "goto LAB_0017d3c2;" (goto "goto") (statement_identifier "LAB_0017d3c2") (; ";"))) (labeled_statement "LAB_0017d46d:\n          pbVar2 = (byte *)FUN_0017d830();" (statement_identifier "LAB_0017d46d") (: ":") (expression_statement "pbVar2 = (byte *)FUN_0017d830();" (assignment_expression "pbVar2 = (byte *)FUN_0017d830()" (identifier "pbVar2") (= "=") (cast_expression "(byte *)FUN_0017d830()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017d830()" (identifier "FUN_0017d830") (argument_list "()" (( "(") () ")"))))) (; ";"))) (labeled_statement "LAB_0017d47f:\n          pbVar6 = pbVar5;" (statement_identifier "LAB_0017d47f") (: ":") (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" (identifier "pbVar6") (= "=") (identifier "pbVar5")) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(pbVar2 == (byte *)0x0)" (( "(") (binary_expression "pbVar2 == (byte *)0x0" (identifier "pbVar2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "sVar1 = strlen((char *)local_3c);" (assignment_expression "sVar1 = strlen((char *)local_3c)" (identifier "sVar1") (= "=") (call_expression "strlen((char *)local_3c)" (identifier "strlen") (argument_list "((char *)local_3c)" (( "(") (cast_expression "(char *)local_3c" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_3c")) () ")")))) (; ";")) (if_statement "if (sVar1 < local_2c) goto LAB_0017d320;" (if "if") (parenthesized_expression "(sVar1 < local_2c)" (( "(") (binary_expression "sVar1 < local_2c" (identifier "sVar1") (< "<") (identifier "local_2c")) () ")")) (goto_statement "goto LAB_0017d320;" (goto "goto") (statement_identifier "LAB_0017d320") (; ";"))) (if_statement "if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)) {\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }" (if "if") (parenthesized_expression "((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2))" (( "(") (binary_expression "(((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&\n       ((byte)(local_3c[2] + 0xac) < 2)" (parenthesized_expression "(((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f))" (( "(") (binary_expression "((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)" (parenthesized_expression "((4 < (int)local_2c) && (*local_3c == 0x5f))" (( "(") (binary_expression "(4 < (int)local_2c) && (*local_3c == 0x5f)" (parenthesized_expression "(4 < (int)local_2c)" (( "(") (binary_expression "4 < (int)local_2c" (number_literal "4") (< "<") (cast_expression "(int)local_2c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_2c"))) () ")")) (&& "&&") (parenthesized_expression "(*local_3c == 0x5f)" (( "(") (binary_expression "*local_3c == 0x5f" (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (== "==") (number_literal "0x5f")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(local_3c[1] == 0x5f)" (( "(") (binary_expression "local_3c[1] == 0x5f" (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x5f")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((byte)(local_3c[2] + 0xac) < 2)" (( "(") (binary_expression "(byte)(local_3c[2] + 0xac) < 2" (call_expression "(byte)(local_3c[2] + 0xac)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(local_3c[2] + 0xac)" (( "(") (binary_expression "local_3c[2] + 0xac" (subscript_expression "local_3c[2]" (identifier "local_3c") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0xac")) () ")"))) (< "<") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }\n      goto LAB_0017d320;\n    }" ({ "{") (if_statement "if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30))" (( "(") (binary_expression "(((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)" (parenthesized_expression "(((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0)" (( "(") (binary_expression "((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0" (parenthesized_expression "((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4)" (( "(") (binary_expression "(&DAT_0023a160)[(uint)local_3c[3] * 2] & 4" (subscript_expression "(&DAT_0023a160)[(uint)local_3c[3] * 2]" (parenthesized_expression "(&DAT_0023a160)" (( "(") (pointer_expression "&DAT_0023a160" (& "&") (identifier "DAT_0023a160")) () ")")) ([ "[") (binary_expression "(uint)local_3c[3] * 2" (cast_expression "(uint)local_3c[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_3c[3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]"))) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_3c[3] != 0x30)" (( "(") (binary_expression "local_3c[3] != 0x30" (subscript_expression "local_3c[3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0x30")) () ")"))) () ")")) (compound_statement "{\n        pbVar2 = (byte *)FUN_0017d280();\n        FUN_0017b850();\n        if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }\n      }" ({ "{") (expression_statement "pbVar2 = (byte *)FUN_0017d280();" (assignment_expression "pbVar2 = (byte *)FUN_0017d280()" (identifier "pbVar2") (= "=") (cast_expression "(byte *)FUN_0017d280()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017d280()" (identifier "FUN_0017d280") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (pbVar2 == (byte *)0x0) {\nLAB_0017d304:\n          FUN_0017b850();\n        }\n        else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" (if "if") (parenthesized_expression "(pbVar2 == (byte *)0x0)" (( "(") (binary_expression "pbVar2 == (byte *)0x0" (identifier "pbVar2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0017d304:\n          FUN_0017b850();\n        }" ({ "{") (labeled_statement "LAB_0017d304:\n          FUN_0017b850();" (statement_identifier "LAB_0017d304") (: ":") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" (else "else") (compound_statement "{\n          bVar12 = *pbVar2;\n          if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }\n          if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }\n        }" ({ "{") (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" (identifier "bVar12") (= "=") (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2"))) (; ";")) (if_statement "if (bVar12 == 0) {\nLAB_0017d80a:\n            FUN_0017b850();\n          }\n          else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" (if "if") (parenthesized_expression "(bVar12 == 0)" (( "(") (binary_expression "bVar12 == 0" (identifier "bVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0017d80a:\n            FUN_0017b850();\n          }" ({ "{") (labeled_statement "LAB_0017d80a:\n            FUN_0017b850();" (statement_identifier "LAB_0017d80a") (: ":") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" (else "else") (compound_statement "{\n            if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }\n            pbVar2 = pbVar2 + 1;\nLAB_0017d55b:\n            FUN_0017b850();\n            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;\n          }" ({ "{") (if_statement "if (bVar12 != 0x5a) {\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }" (if "if") (parenthesized_expression "(bVar12 != 0x5a)" (( "(") (binary_expression "bVar12 != 0x5a" (identifier "bVar12") (!= "!=") (number_literal "0x5a")) () ")")) (compound_statement "{\n              iVar8 = 1;\n              while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }\n            }" ({ "{") (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (while_statement "while( true ) {\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }\n                if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }\n                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;\n                bVar12 = *pbVar2;\n                if (bVar12 == 0) goto LAB_0017d80a;\n                if (bVar12 == 0x5a) break;\n                if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }\n                iVar8 = iVar8 + 1;\n              }" ({ "{") (if_statement "if (bVar12 == 0x48) {\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }" (if "if") (parenthesized_expression "(bVar12 == 0x48)" (( "(") (binary_expression "bVar12 == 0x48" (identifier "bVar12") (== "==") (number_literal "0x48")) () ")")) (compound_statement "{\n                  bVar12 = pbVar2[1];\n                  pbVar2 = pbVar2 + 1;\n                }" ({ "{") (expression_statement "bVar12 = pbVar2[1];" (assignment_expression "bVar12 = pbVar2[1]" (identifier "bVar12") (= "=") (subscript_expression "pbVar2[1]" (identifier "pbVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + 1" (identifier "pbVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (bVar12 == 0x54) {\n                  pbVar2 = (byte *)FUN_0017c870();\n                }\n                else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" (if "if") (parenthesized_expression "(bVar12 == 0x54)" (( "(") (binary_expression "bVar12 == 0x54" (identifier "bVar12") (== "==") (number_literal "0x54")) () ")")) (compound_statement "{\n                  pbVar2 = (byte *)FUN_0017c870();\n                }" ({ "{") (expression_statement "pbVar2 = (byte *)FUN_0017c870();" (assignment_expression "pbVar2 = (byte *)FUN_0017c870()" (identifier "pbVar2") (= "=") (cast_expression "(byte *)FUN_0017c870()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}")) (else_clause "else if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" (else "else") (if_statement "if (bVar12 == 0x56) {\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }\n                else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" (if "if") (parenthesized_expression "(bVar12 == 0x56)" (( "(") (binary_expression "bVar12 == 0x56" (identifier "bVar12") (== "==") (number_literal "0x56")) () ")")) (compound_statement "{\n                  bVar12 = pbVar2[1];\n                  FUN_0017c870();\n                  FUN_0017b7c0();\n                  DAT_00000000 = 0;\n                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);\n                }" ({ "{") (expression_statement "bVar12 = pbVar2[1];" (assignment_expression "bVar12 = pbVar2[1]" (identifier "bVar12") (= "=") (subscript_expression "pbVar2[1]" (identifier "pbVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "FUN_0017c870();" (call_expression "FUN_0017c870()" (identifier "FUN_0017c870") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0017b7c0();" (call_expression "FUN_0017b7c0()" (identifier "FUN_0017b7c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "DAT_00000000 = 0;" (assignment_expression "DAT_00000000 = 0" (identifier "DAT_00000000") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);" (assignment_expression "pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12)" (identifier "pbVar2") (= "=") (cast_expression "(byte *)FUN_0017c110((int)(char)bVar12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017c110((int)(char)bVar12)" (identifier "FUN_0017c110") (argument_list "((int)(char)bVar12)" (( "(") (cast_expression "(int)(char)bVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar12"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" (else "else") (compound_statement "{\n                  if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }\n                  pbVar2 = (byte *)FUN_0017d280();\n                }" ({ "{") (if_statement "if (bVar12 != 0x53) {\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }" (if "if") (parenthesized_expression "(bVar12 != 0x53)" (( "(") (binary_expression "bVar12 != 0x53" (identifier "bVar12") (!= "!=") (number_literal "0x53")) () ")")) (compound_statement "{\n                    pbVar2 = (byte *)0x0;\n                    goto LAB_0017d55b;\n                  }" ({ "{") (expression_statement "pbVar2 = (byte *)0x0;" (assignment_expression "pbVar2 = (byte *)0x0" (identifier "pbVar2") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0017d55b;" (goto "goto") (statement_identifier "LAB_0017d55b") (; ";")) (} "}"))) (expression_statement "pbVar2 = (byte *)FUN_0017d280();" (assignment_expression "pbVar2 = (byte *)FUN_0017d280()" (identifier "pbVar2") (= "=") (cast_expression "(byte *)FUN_0017d280()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017d280()" (identifier "FUN_0017d280") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}")))))) (if_statement "if (pbVar2 == (byte *)0x0) goto LAB_0017d304;" (if "if") (parenthesized_expression "(pbVar2 == (byte *)0x0)" (( "(") (binary_expression "pbVar2 == (byte *)0x0" (identifier "pbVar2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0017d304;" (goto "goto") (statement_identifier "LAB_0017d304") (; ";"))) (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" (identifier "bVar12") (= "=") (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2"))) (; ";")) (if_statement "if (bVar12 == 0) goto LAB_0017d80a;" (if "if") (parenthesized_expression "(bVar12 == 0)" (( "(") (binary_expression "bVar12 == 0" (identifier "bVar12") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0017d80a;" (goto "goto") (statement_identifier "LAB_0017d80a") (; ";"))) (if_statement "if (bVar12 == 0x5a) break;" (if "if") (parenthesized_expression "(bVar12 == 0x5a)" (( "(") (binary_expression "bVar12 == 0x5a" (identifier "bVar12") (== "==") (number_literal "0x5a")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (iVar8 != 0) {\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_0017b850();\n                  bVar12 = *pbVar2;\n                }" ({ "{") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar12 = *pbVar2;" (assignment_expression "bVar12 = *pbVar2" (identifier "bVar12") (= "=") (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2"))) (; ";")) (} "}"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + 1" (identifier "pbVar2") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_0017d55b:\n            FUN_0017b850();" (statement_identifier "LAB_0017d55b") (: ":") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";"))) (if_statement "if (pbVar2 == (byte *)0x0) goto LAB_0017d320;" (if "if") (parenthesized_expression "(pbVar2 == (byte *)0x0)" (( "(") (binary_expression "pbVar2 == (byte *)0x0" (identifier "pbVar2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0017d320;" (goto "goto") (statement_identifier "LAB_0017d320") (; ";"))) (} "}")))) (if_statement "if (local_2c == (int)pbVar2 - (int)local_3c) {\n            return pbVar2;\n          }" (if "if") (parenthesized_expression "(local_2c == (int)pbVar2 - (int)local_3c)" (( "(") (binary_expression "local_2c == (int)pbVar2 - (int)local_3c" (identifier "local_2c") (== "==") (binary_expression "(int)pbVar2 - (int)local_3c" (cast_expression "(int)pbVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar2")) (- "-") (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")))) () ")")) (compound_statement "{\n            return pbVar2;\n          }" ({ "{") (return_statement "return pbVar2;" (return "return") (identifier "pbVar2") (; ";")) (} "}"))) (} "}")))) (} "}"))) (goto_statement "goto LAB_0017d320;" (goto "goto") (statement_identifier "LAB_0017d320") (; ";")) (} "}"))) (if_statement "if (6 < local_2c - 6) goto LAB_0017d350;" (if "if") (parenthesized_expression "(6 < local_2c - 6)" (( "(") (binary_expression "6 < local_2c - 6" (number_literal "6") (< "<") (binary_expression "local_2c - 6" (identifier "local_2c") (- "-") (number_literal "6"))) () ")")) (goto_statement "goto LAB_0017d350;" (goto "goto") (statement_identifier "LAB_0017d350") (; ";"))) (expression_statement "bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);" (assignment_expression "bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" (identifier "bVar9") (= "=") (binary_expression "0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" (number_literal "0xffcfdfff") (< "<") (pointer_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" (* "*") (cast_expression "(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00239b20 + (local_2c - 6) * 4)" (( "(") (binary_expression "&DAT_00239b20 + (local_2c - 6) * 4" (pointer_expression "&DAT_00239b20" (& "&") (identifier "DAT_00239b20")) (+ "+") (binary_expression "(local_2c - 6) * 4" (parenthesized_expression "(local_2c - 6)" (( "(") (binary_expression "local_2c - 6" (identifier "local_2c") (- "-") (number_literal "6")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;" (assignment_expression "bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000" (identifier "bVar11") (= "=") (binary_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000" (pointer_expression "*(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" (* "*") (cast_expression "(uint *)(&DAT_00239b20 + (local_2c - 6) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00239b20 + (local_2c - 6) * 4)" (( "(") (binary_expression "&DAT_00239b20 + (local_2c - 6) * 4" (pointer_expression "&DAT_00239b20" (& "&") (identifier "DAT_00239b20")) (+ "+") (binary_expression "(local_2c - 6) * 4" (parenthesized_expression "(local_2c - 6)" (( "(") (binary_expression "local_2c - 6" (identifier "local_2c") (- "-") (number_literal "6")) () ")")) (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0xffcfe000"))) (; ";")) (switch_statement "switch(local_2c) {\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }" (switch "switch") (parenthesized_expression "(local_2c)" (( "(") (identifier "local_2c") () ")")) (compound_statement "{\n    case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;\n    case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }\n    default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;\n    case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;\n    case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n    }" ({ "{") (case_statement "case 6:\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ctor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 6;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__dtor";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar11 = false;\n      bVar9 = (!bVar10 && !bVar9) == bVar10;\n      if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }\n      iVar8 = 7;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__initZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);\n      bVar10 = false;\n      bVar9 = (!bVar11 && !bVar9) == bVar11;\n      if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }\n      break;" (case "case") (number_literal "6") (: ":") (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" (identifier "iVar8") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "pbVar5 = (byte *)"__ctor";" (assignment_expression "pbVar5 = (byte *)"__ctor"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"__ctor"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""__ctor"" (" """) (string_content "__ctor") (" """)))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" (identifier "bVar11") (= "=") (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" (identifier "pbVar2") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (!bVar9 && !bVar11) == bVar9;" (assignment_expression "bVar9 = (!bVar9 && !bVar11) == bVar9" (identifier "bVar9") (= "=") (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" (( "(") (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (== "==") (identifier "bVar9"))) (; ";")) (if_statement "if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" ({ "{") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return local_3c + local_2c;" (return "return") (binary_expression "local_3c + local_2c" (identifier "local_3c") (+ "+") (identifier "local_2c")) (; ";")) (} "}"))) (expression_statement "iVar8 = 6;" (assignment_expression "iVar8 = 6" (identifier "iVar8") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "pbVar5 = (byte *)"__dtor";" (assignment_expression "pbVar5 = (byte *)"__dtor"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"__dtor"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""__dtor"" (" """) (string_content "__dtor") (" """)))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar10 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar2 < *pbVar5;" (assignment_expression "bVar10 = *pbVar2 < *pbVar5" (identifier "bVar10") (= "=") (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" (identifier "pbVar2") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" (identifier "bVar9") (= "=") (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" (( "(") (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" (! "!") (identifier "bVar10")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar10"))) (; ";")) (if_statement "if (bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c;\n      }" ({ "{") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return local_3c + local_2c;" (return "return") (binary_expression "local_3c + local_2c" (identifier "local_3c") (+ "+") (identifier "local_2c")) (; ";")) (} "}"))) (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" (identifier "iVar8") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "pbVar5 = (byte *)"__initZ";" (assignment_expression "pbVar5 = (byte *)"__initZ"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"__initZ"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""__initZ"" (" """) (string_content "__initZ") (" """)))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar9);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar11 = *pbVar2 < *pbVar5;\n        bVar9 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar2 < *pbVar5;" (assignment_expression "bVar11 = *pbVar2 < *pbVar5" (identifier "bVar11") (= "=") (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" (identifier "pbVar2") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" (identifier "bVar9") (= "=") (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" (( "(") (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" (! "!") (identifier "bVar11")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar11"))) (; ";")) (if_statement "if (!bVar9) {\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }" (if "if") (parenthesized_expression "(!bVar9)" (( "(") (unary_expression "!bVar9" (! "!") (identifier "bVar9")) () ")")) (compound_statement "{\n        iVar8 = 7;\n        pbVar2 = local_3c;\n        pbVar5 = &UNK_00239781;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);\n        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;\n      }" ({ "{") (expression_statement "iVar8 = 7;" (assignment_expression "iVar8 = 7" (identifier "iVar8") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "pbVar5 = &UNK_00239781;" (assignment_expression "pbVar5 = &UNK_00239781" (identifier "pbVar5") (= "=") (pointer_expression "&UNK_00239781" (& "&") (identifier "UNK_00239781"))) (; ";")) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        } while (bVar9);" (do "do") (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar10 = *pbVar2 < *pbVar5;\n          bVar9 = *pbVar2 == *pbVar5;\n          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar2 < *pbVar5;" (assignment_expression "bVar10 = *pbVar2 < *pbVar5" (identifier "bVar10") (= "=") (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar9 = *pbVar2 == *pbVar5;" (assignment_expression "bVar9 = *pbVar2 == *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" (identifier "pbVar2") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (if_statement "if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;" (if "if") (parenthesized_expression "((!bVar10 && !bVar9) != bVar10)" (( "(") (binary_expression "(!bVar10 && !bVar9) != bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" (( "(") (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" (! "!") (identifier "bVar10")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (!= "!=") (identifier "bVar10")) () ")")) (goto_statement "goto LAB_0017d350;" (goto "goto") (statement_identifier "LAB_0017d350") (; ";"))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 7:\n      iVar8 = 8;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ClassZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;" (case "case") (number_literal "7") (: ":") (expression_statement "iVar8 = 8;" (assignment_expression "iVar8 = 8" (identifier "iVar8") (= "=") (number_literal "8")) (; ";")) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "pbVar5 = (byte *)"__ClassZ";" (assignment_expression "pbVar5 = (byte *)"__ClassZ"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"__ClassZ"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""__ClassZ"" (" """) (string_content "__ClassZ") (" """)))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" (identifier "bVar11") (= "=") (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" (identifier "pbVar2") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" (if "if") (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" (( "(") (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" (( "(") (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (!= "!=") (identifier "bVar9")) () ")")) (goto_statement "goto LAB_0017d350;" (goto "goto") (statement_identifier "LAB_0017d350") (; ";"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 10:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__postblitMFZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" (case "case") (number_literal "10") (: ":") (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" (identifier "iVar8") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "pbVar5 = (byte *)"__postblitMFZ";" (assignment_expression "pbVar5 = (byte *)"__postblitMFZ"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"__postblitMFZ"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""__postblitMFZ"" (" """) (string_content "__postblitMFZ") (" """)))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" (identifier "bVar11") (= "=") (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" (identifier "pbVar2") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (if_statement "if ((!bVar9 && !bVar11) == bVar9) {\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" (if "if") (parenthesized_expression "((!bVar9 && !bVar11) == bVar9)" (( "(") (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" (( "(") (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (== "==") (identifier "bVar9")) () ")")) (compound_statement "{\n        FUN_0017b850();\n        return local_3c + local_2c + 3;\n      }" ({ "{") (expression_statement "FUN_0017b850();" (call_expression "FUN_0017b850()" (identifier "FUN_0017b850") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return local_3c + local_2c + 3;" (return "return") (binary_expression "local_3c + local_2c + 3" (binary_expression "local_3c + local_2c" (identifier "local_3c") (+ "+") (identifier "local_2c")) (+ "+") (number_literal "3")) (; ";")) (} "}")))) (case_statement "default:\nLAB_0017d350:\n      FUN_0017bbd0();\n      return local_3c + local_2c;" (default "default") (: ":") (labeled_statement "LAB_0017d350:\n      FUN_0017bbd0();" (statement_identifier "LAB_0017d350") (: ":") (expression_statement "FUN_0017bbd0();" (call_expression "FUN_0017bbd0()" (identifier "FUN_0017bbd0") (argument_list "()" (( "(") () ")"))) (; ";"))) (return_statement "return local_3c + local_2c;" (return "return") (binary_expression "local_3c + local_2c" (identifier "local_3c") (+ "+") (identifier "local_2c")) (; ";"))) (case_statement "case 0xb:\n      iVar8 = 0xc;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__InterfaceZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;\n      break;" (case "case") (number_literal "0xb") (: ":") (expression_statement "iVar8 = 0xc;" (assignment_expression "iVar8 = 0xc" (identifier "iVar8") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "pbVar5 = (byte *)"__InterfaceZ";" (assignment_expression "pbVar5 = (byte *)"__InterfaceZ"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"__InterfaceZ"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""__InterfaceZ"" (" """) (string_content "__InterfaceZ") (" """)))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" (identifier "bVar11") (= "=") (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" (identifier "pbVar2") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" (if "if") (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" (( "(") (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" (( "(") (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (!= "!=") (identifier "bVar9")) () ")")) (goto_statement "goto LAB_0017d350;" (goto "goto") (statement_identifier "LAB_0017d350") (; ";"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xc:\n      iVar8 = 0xd;\n      pbVar2 = local_3c;\n      pbVar5 = (byte *)"__ModuleInfoZ";\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);\n      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" (case "case") (number_literal "0xc") (: ":") (expression_statement "iVar8 = 0xd;" (assignment_expression "iVar8 = 0xd" (identifier "iVar8") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "pbVar2 = local_3c;" (assignment_expression "pbVar2 = local_3c" (identifier "pbVar2") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "pbVar5 = (byte *)"__ModuleInfoZ";" (assignment_expression "pbVar5 = (byte *)"__ModuleInfoZ"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"__ModuleInfoZ"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""__ModuleInfoZ"" (" """) (string_content "__ModuleInfoZ") (" """)))) (; ";")) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      } while (bVar11);" (do "do") (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar9 = *pbVar2 < *pbVar5;\n        bVar11 = *pbVar2 == *pbVar5;\n        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;\n        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar2 < *pbVar5;" (assignment_expression "bVar9 = *pbVar2 < *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar2 < *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar11 = *pbVar2 == *pbVar5;" (assignment_expression "bVar11 = *pbVar2 == *pbVar5" (identifier "bVar11") (= "=") (binary_expression "*pbVar2 == *pbVar5" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar2 + (uint)bVar12 * -2" (identifier "pbVar2") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar12 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (if_statement "if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;" (if "if") (parenthesized_expression "((!bVar9 && !bVar11) != bVar9)" (( "(") (binary_expression "(!bVar9 && !bVar11) != bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" (( "(") (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (!= "!=") (identifier "bVar9")) () ")")) (goto_statement "goto LAB_0017d350;" (goto "goto") (statement_identifier "LAB_0017d350") (; ";")))) (} "}"))) (expression_statement "FUN_0017bb50();" (call_expression "FUN_0017bb50()" (identifier "FUN_0017bb50") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" (identifier "iVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar3 = (param_1[1] - iVar8) + -1;" (assignment_expression "iVar3 = (param_1[1] - iVar8) + -1" (identifier "iVar3") (= "=") (binary_expression "(param_1[1] - iVar8) + -1" (parenthesized_expression "(param_1[1] - iVar8)" (( "(") (binary_expression "param_1[1] - iVar8" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "iVar8")) () ")")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar8 == param_1[1]) {\n      iVar3 = -1;\n    }" (if "if") (parenthesized_expression "(iVar8 == param_1[1])" (( "(") (binary_expression "iVar8 == param_1[1]" (identifier "iVar8") (== "==") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n      iVar3 = -1;\n    }" ({ "{") (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" (identifier "iVar3") (= "=") (number_literal "-1")) (; ";")) (} "}"))) (expression_statement "local_3c = local_3c + local_2c;" (assignment_expression "local_3c = local_3c + local_2c" (identifier "local_3c") (= "=") (binary_expression "local_3c + local_2c" (identifier "local_3c") (+ "+") (identifier "local_2c"))) (; ";")) (expression_statement "param_1[1] = iVar8 + iVar3;" (assignment_expression "param_1[1] = iVar8 + iVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar8 + iVar3" (identifier "iVar8") (+ "+") (identifier "iVar3"))) (; ";")) (} "}")))) (return_statement "return local_3c;" (return "return") (identifier "local_3c") (; ";")) (} "}"))

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

char * __regparm3 function_1(type_1 *decl,char *mangled,type_2 var_4)

{
  char var_21;
  size_t var_18;
  type_3 *var_16;
  char *var_13;
  int var_6;
  char *pcVar6;
  type_3 *var_26;
  type_3 *var_7;
  type_3 *var_8;
  int var_12;
  bool var_27;
  bool var_28;
  bool var_9;
  type_3 bVar14;
  type_1 *in_stack_ffffffb4;
  char *in_stack_ffffffb8;
  type_4 var_19;
  type_2 var_11;
  type_3 *var_2;
  long var_3;
  type_1 name;
  
  bVar14 = 0;
  var_2 = (type_3 *)var_1(mangled,&var_3);
  if ((var_2 == (type_3 *)0x0) || (var_3 == 0)) {
LAB_0017d320:
    var_2 = (type_3 *)0x0;
  }
  else {
    if (var_4 == var_5) {
      var_12 = 0;
      if (decl->b != decl->p) {
        var_12 = (int)decl->p - (int)decl->b;
      }
      var_16 = var_2;
      var_11 = var_3;
LAB_0017d3b0:
      var_26 = var_16;
      var_27 = (_sch_istable[*var_26] & 4) == 0;
      var_16 = var_26;
      if (!var_27) goto LAB_0017d46d;
LAB_0017d3c2:
      var_9 = false;
      var_6 = 2;
      var_7 = var_16;
      var_8 = &DAT_00239751;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_9 = *var_7 < *var_8;
        var_27 = *var_7 == *var_8;
        var_7 = var_7 + (type_4)bVar14 * -2 + 1;
        var_8 = var_8 + (type_4)bVar14 * -2 + 1;
      } while (var_27);
      if ((!var_9 && !var_27) == var_9) {
        var_16 = (type_3 *)var_10(decl,(char *)var_16,dlang_function);
        goto LAB_0017d47f;
      }
      do {
        var_7 = var_26;
        if ((int)var_16 - (int)var_26 == var_11) {
          return (char *)var_16;
        }
        do {
          var_26 = var_2;
          var_11 = (int)var_11 / 10;
          var_13 = decl->b;
          var_6 = var_12 - ((int)decl->p - (int)var_13);
          if (decl->p == var_13) {
            var_6 = var_12;
          }
          if (var_6 < 0) {
            decl->p = var_13 + var_12;
          }
          var_16 = var_7 + -1;
          if (var_2 == (type_3 *)0x0) goto LAB_0017d320;
          if (var_11 != var_14) goto LAB_0017d3b0;
          var_2 = (type_3 *)0x0;
          var_27 = (_sch_istable[*var_16] & 4) == 0;
          var_11 = var_3;
          if (var_27) goto LAB_0017d3c2;
LAB_0017d46d:
          var_16 = (type_3 *)var_15(in_stack_ffffffb4,in_stack_ffffffb8,var_11);
LAB_0017d47f:
          var_7 = var_26;
        } while (var_16 == (type_3 *)0x0);
      } while( true );
    }
    var_19 = var_3;
    var_18 = var_17((char *)var_2);
    if (var_18 < var_19) goto LAB_0017d320;
    if ((((4 < (int)var_19) && (*var_2 == 0x5f)) && (var_2[1] == 0x5f)) &&
       ((type_3)(var_2[2] + 0xac) < 2)) {
      if (((_sch_istable[var_2[3]] & 4) != 0) && (var_2[3] != 0x30)) {
        var_13 = function_1(decl,(char *)(var_2 + 3),dlang_template_ident);
        var_20(decl,"!(");
        if (var_13 == (char *)0x0) {
LAB_0017d304:
          var_20(decl,")");
        }
        else {
          var_21 = *var_13;
          if (var_21 == '\0') {
LAB_0017d80a:
            var_20(decl,")");
          }
          else {
            if (var_21 != 'Z') {
              var_12 = 1;
              while( true ) {
                if (var_21 == 'H') {
                  var_21 = var_13[1];
                  var_13 = var_13 + 1;
                }
                if (var_21 == 'T') {
                  var_13 = var_22(decl,var_13 + 1);
                }
                else if (var_21 == 'V') {
                  var_21 = var_13[1];
                  name.e = (char *)0x0;
                  name.p = (char *)0x0;
                  name.b = (char *)0x0;
                  var_13 = var_22(&name,var_13 + 1);
                  var_23(&name,1);
                  *name.p = '\0';
                  var_13 = var_24(decl,var_13,name.b,var_21);
                  if (name.b != (char *)0x0) {
                    var_25(name.b);
                  }
                }
                else {
                  if (var_21 != 'S') {
                    var_13 = (char *)0x0;
                    goto LAB_0017d55b;
                  }
                  var_13 = function_1(decl,var_13 + 1,var_5);
                }
                if (var_13 == (char *)0x0) goto LAB_0017d304;
                var_21 = *var_13;
                if (var_21 == '\0') goto LAB_0017d80a;
                if (var_21 == 'Z') break;
                if (var_12 != 0) {
                  var_20(decl,", ");
                  var_21 = *var_13;
                }
                var_12 = var_12 + 1;
              }
            }
            var_13 = var_13 + 1;
LAB_0017d55b:
            var_20(decl,")");
            if (var_13 == (char *)0x0) goto LAB_0017d320;
          }
          if (var_19 == (int)var_13 - (int)var_2) {
            return var_13;
          }
        }
      }
      goto LAB_0017d320;
    }
    if (6 < var_19 - 6) goto _L493;
    var_27 = 0xffcfdfff < (&switchD_0017d302::switchdataD_00239b20)[var_19 - 6];
    var_9 = (&switchD_0017d302::switchdataD_00239b20)[var_19 - 6] == 0xffcfe000;
    switch(var_19) {
    case 6:
      var_12 = 6;
      var_16 = var_2;
      var_26 = (type_3 *)"__ctor";
      do {
        if (var_12 == 0) break;
        var_12 = var_12 + -1;
        var_27 = *var_16 < *var_26;
        var_9 = *var_16 == *var_26;
        var_16 = var_16 + (type_4)bVar14 * -2 + 1;
        var_26 = var_26 + (type_4)bVar14 * -2 + 1;
      } while (var_9);
      var_28 = false;
      var_27 = (!var_27 && !var_9) == var_27;
      if (var_27) {
        var_20(decl,"this");
        return (char *)(var_2 + var_3);
      }
      var_12 = 6;
      var_16 = var_2;
      var_26 = (type_3 *)"__dtor";
      do {
        if (var_12 == 0) break;
        var_12 = var_12 + -1;
        var_28 = *var_16 < *var_26;
        var_27 = *var_16 == *var_26;
        var_16 = var_16 + (type_4)bVar14 * -2 + 1;
        var_26 = var_26 + (type_4)bVar14 * -2 + 1;
      } while (var_27);
      var_9 = false;
      var_27 = (!var_28 && !var_27) == var_28;
      if (var_27) {
        var_20(decl,"~this");
        return (char *)(var_2 + var_3);
      }
      var_12 = 7;
      var_16 = var_2;
      var_26 = (type_3 *)"__initZ";
      do {
        if (var_12 == 0) break;
        var_12 = var_12 + -1;
        var_9 = *var_16 < *var_26;
        var_27 = *var_16 == *var_26;
        var_16 = var_16 + (type_4)bVar14 * -2 + 1;
        var_26 = var_26 + (type_4)bVar14 * -2 + 1;
      } while (var_27);
      var_28 = false;
      var_27 = (!var_9 && !var_27) == var_9;
      if (var_27) {
        var_13 = "initializer for ";
      }
      else {
        var_12 = 7;
        var_16 = var_2;
        var_26 = (type_3 *)"__vtblZ";
        do {
          if (var_12 == 0) break;
          var_12 = var_12 + -1;
          var_28 = *var_16 < *var_26;
          var_27 = *var_16 == *var_26;
          var_16 = var_16 + (type_4)bVar14 * -2 + 1;
          var_26 = var_26 + (type_4)bVar14 * -2 + 1;
        } while (var_27);
        if ((!var_28 && !var_27) != var_28) goto _L493;
        var_13 = "vtable for ";
      }
      break;
    case 7:
      var_12 = 8;
      var_16 = var_2;
      var_26 = (type_3 *)"__ClassZ";
      do {
        if (var_12 == 0) break;
        var_12 = var_12 + -1;
        var_27 = *var_16 < *var_26;
        var_9 = *var_16 == *var_26;
        var_16 = var_16 + (type_4)bVar14 * -2 + 1;
        var_26 = var_26 + (type_4)bVar14 * -2 + 1;
      } while (var_9);
      if ((!var_27 && !var_9) != var_27) goto _L493;
      var_13 = "ClassInfo for ";
      break;
    case 10:
      var_12 = 0xd;
      var_16 = var_2;
      var_26 = (type_3 *)"__postblitMFZ";
      do {
        if (var_12 == 0) break;
        var_12 = var_12 + -1;
        var_27 = *var_16 < *var_26;
        var_9 = *var_16 == *var_26;
        var_16 = var_16 + (type_4)bVar14 * -2 + 1;
        var_26 = var_26 + (type_4)bVar14 * -2 + 1;
      } while (var_9);
      if ((!var_27 && !var_9) == var_27) {
        var_20(decl,"this(this)");
        return (char *)(var_2 + var_3 + 3);
      }
    default:
_L493:
      var_29(decl,(char *)var_2,var_19);
      return (char *)(var_2 + var_3);
    case 0xb:
      var_12 = 0xc;
      var_16 = var_2;
      var_26 = (type_3 *)"__InterfaceZ";
      do {
        if (var_12 == 0) break;
        var_12 = var_12 + -1;
        var_27 = *var_16 < *var_26;
        var_9 = *var_16 == *var_26;
        var_16 = var_16 + (type_4)bVar14 * -2 + 1;
        var_26 = var_26 + (type_4)bVar14 * -2 + 1;
      } while (var_9);
      if ((!var_27 && !var_9) != var_27) goto _L493;
      var_13 = "Interface for ";
      break;
    case 0xc:
      var_12 = 0xd;
      var_16 = var_2;
      var_26 = (type_3 *)"__ModuleInfoZ";
      do {
        if (var_12 == 0) break;
        var_12 = var_12 + -1;
        var_27 = *var_16 < *var_26;
        var_9 = *var_16 == *var_26;
        var_16 = var_16 + (type_4)bVar14 * -2 + 1;
        var_26 = var_26 + (type_4)bVar14 * -2 + 1;
      } while (var_9);
      if ((!var_27 && !var_9) != var_27) goto _L493;
      var_13 = "ModuleInfo for ";
    }
    var_30(decl,var_13);
    var_13 = decl->b;
    pcVar6 = decl->p + (-1 - (int)var_13);
    if (var_13 == decl->p) {
      pcVar6 = (char *)0xffffffff;
    }
    var_2 = var_2 + var_3;
    decl->p = var_13 + (int)pcVar6;
  }
  return (char *)var_2;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x0017d79e) */

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

{
  size_t sVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  byte *pbVar7;
  int iVar8;
  bool bVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  uint local_44;
  byte *local_3c;
  uint local_2c;
  
  bVar12 = 0;
  local_3c = (byte *)FUN_0017b740();
  if ((local_3c == (byte *)0x0) || (local_44 = local_2c, local_2c == 0)) {
LAB_0017d320:
    local_3c = (byte *)0x0;
  }
  else {
    if (param_3 == 4) {
      iVar8 = 0;
      if (*param_1 != param_1[1]) {
        iVar8 = param_1[1] - *param_1;
      }
      pbVar2 = local_3c;
LAB_0017d3b0:
      pbVar5 = pbVar2;
      bVar9 = ((&DAT_0023a160)[(uint)*pbVar5 * 2] & 4) == 0;
      pbVar2 = pbVar5;
      if (!bVar9) goto LAB_0017d46d;
LAB_0017d3c2:
      bVar11 = false;
      iVar3 = 2;
      pbVar6 = pbVar2;
      pbVar7 = &DAT_00239751;
      do {
        if (iVar3 == 0) break;
        iVar3 = iVar3 + -1;
        bVar11 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar12 * -2 + 1;
      } while (bVar9);
      if ((!bVar11 && !bVar9) == bVar11) {
        pbVar2 = (byte *)FUN_0017d080();
        goto LAB_0017d47f;
      }
      do {
        pbVar6 = pbVar5;
        if ((int)pbVar2 - (int)pbVar5 == local_44) {
          return pbVar2;
        }
        do {
          pbVar5 = local_3c;
          local_44 = (int)local_44 / 10;
          iVar3 = *param_1;
          iVar4 = iVar8 - (param_1[1] - iVar3);
          if (param_1[1] == iVar3) {
            iVar4 = iVar8;
          }
          if (iVar4 < 0) {
            param_1[1] = iVar3 + iVar8;
          }
          pbVar2 = pbVar6 + -1;
          if (local_3c == (byte *)0x0) goto LAB_0017d320;
          if (local_44 != 0) goto LAB_0017d3b0;
          local_44 = local_2c;
          local_3c = (byte *)0x0;
          bVar9 = ((&DAT_0023a160)[(uint)*pbVar2 * 2] & 4) == 0;
          if (bVar9) goto LAB_0017d3c2;
LAB_0017d46d:
          pbVar2 = (byte *)FUN_0017d830();
LAB_0017d47f:
          pbVar6 = pbVar5;
        } while (pbVar2 == (byte *)0x0);
      } while( true );
    }
    sVar1 = strlen((char *)local_3c);
    if (sVar1 < local_2c) goto LAB_0017d320;
    if ((((4 < (int)local_2c) && (*local_3c == 0x5f)) && (local_3c[1] == 0x5f)) &&
       ((byte)(local_3c[2] + 0xac) < 2)) {
      if ((((&DAT_0023a160)[(uint)local_3c[3] * 2] & 4) != 0) && (local_3c[3] != 0x30)) {
        pbVar2 = (byte *)MASKED();
        FUN_0017b850();
        if (pbVar2 == (byte *)0x0) {
LAB_0017d304:
          FUN_0017b850();
        }
        else {
          bVar12 = *pbVar2;
          if (bVar12 == 0) {
LAB_0017d80a:
            FUN_0017b850();
          }
          else {
            if (bVar12 != 0x5a) {
              iVar8 = 1;
              while( true ) {
                if (bVar12 == 0x48) {
                  bVar12 = pbVar2[1];
                  pbVar2 = pbVar2 + 1;
                }
                if (bVar12 == 0x54) {
                  pbVar2 = (byte *)FUN_0017c870();
                }
                else if (bVar12 == 0x56) {
                  bVar12 = pbVar2[1];
                  FUN_0017c870();
                  FUN_0017b7c0();
                  DAT_00000000 = 0;
                  pbVar2 = (byte *)FUN_0017c110((int)(char)bVar12);
                }
                else {
                  if (bVar12 != 0x53) {
                    pbVar2 = (byte *)0x0;
                    goto LAB_0017d55b;
                  }
                  pbVar2 = (byte *)MASKED();
                }
                if (pbVar2 == (byte *)0x0) goto LAB_0017d304;
                bVar12 = *pbVar2;
                if (bVar12 == 0) goto LAB_0017d80a;
                if (bVar12 == 0x5a) break;
                if (iVar8 != 0) {
                  FUN_0017b850();
                  bVar12 = *pbVar2;
                }
                iVar8 = iVar8 + 1;
              }
            }
            pbVar2 = pbVar2 + 1;
LAB_0017d55b:
            FUN_0017b850();
            if (pbVar2 == (byte *)0x0) goto LAB_0017d320;
          }
          if (local_2c == (int)pbVar2 - (int)local_3c) {
            return pbVar2;
          }
        }
      }
      goto LAB_0017d320;
    }
    if (6 < local_2c - 6) goto LAB_0017d350;
    bVar9 = 0xffcfdfff < *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4);
    bVar11 = *(uint *)(&DAT_00239b20 + (local_2c - 6) * 4) == 0xffcfe000;
    switch(local_2c) {
    case 6:
      iVar8 = 6;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__ctor";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      bVar10 = false;
      bVar9 = (!bVar9 && !bVar11) == bVar9;
      if (bVar9) {
        FUN_0017b850();
        return local_3c + local_2c;
      }
      iVar8 = 6;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__dtor";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar10 = *pbVar2 < *pbVar5;
        bVar9 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar9);
      bVar11 = false;
      bVar9 = (!bVar10 && !bVar9) == bVar10;
      if (bVar9) {
        FUN_0017b850();
        return local_3c + local_2c;
      }
      iVar8 = 7;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__initZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar11 = *pbVar2 < *pbVar5;
        bVar9 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar9);
      bVar10 = false;
      bVar9 = (!bVar11 && !bVar9) == bVar11;
      if (!bVar9) {
        iVar8 = 7;
        pbVar2 = local_3c;
        pbVar5 = &UNK_00239781;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar10 = *pbVar2 < *pbVar5;
          bVar9 = *pbVar2 == *pbVar5;
          pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
          pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
        } while (bVar9);
        if ((!bVar10 && !bVar9) != bVar10) goto LAB_0017d350;
      }
      break;
    case 7:
      iVar8 = 8;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__ClassZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;
      break;
    case 10:
      iVar8 = 0xd;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__postblitMFZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar9 && !bVar11) == bVar9) {
        FUN_0017b850();
        return local_3c + local_2c + 3;
      }
    default:
LAB_0017d350:
      FUN_0017bbd0();
      return local_3c + local_2c;
    case 0xb:
      iVar8 = 0xc;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__InterfaceZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;
      break;
    case 0xc:
      iVar8 = 0xd;
      pbVar2 = local_3c;
      pbVar5 = (byte *)"__ModuleInfoZ";
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar9 = *pbVar2 < *pbVar5;
        bVar11 = *pbVar2 == *pbVar5;
        pbVar2 = pbVar2 + (uint)bVar12 * -2 + 1;
        pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1;
      } while (bVar11);
      if ((!bVar9 && !bVar11) != bVar9) goto LAB_0017d350;
    }
    FUN_0017bb50();
    iVar8 = *param_1;
    iVar3 = (param_1[1] - iVar8) + -1;
    if (iVar8 == param_1[1]) {
      iVar3 = -1;
    }
    local_3c = local_3c + local_2c;
    param_1[1] = iVar8 + iVar3;
  }
  return local_3c;
}

