
int gnu_special(work_stuff *work,char **mangled,string *declp)

{
  byte bVar1;
  int iVar2;
  uint n;
  int iVar3;
  byte *pbVar4;
  size_t sVar5;
  long lVar6;
  long lVar7;
  byte *pbVar8;
  byte *pbVar9;
  char *pcVar10;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  bool bVar14;
  byte bVar15;
  char buf [50];
  
  bVar15 = 0;
  pbVar4 = (byte *)*mangled;
  bVar12 = *pbVar4 < 0x5f;
  bVar14 = *pbVar4 == 0x5f;
  if (bVar14) {
    bVar1 = pbVar4[1];
    if (bVar1 == 0) {
LAB_0048bcb8:
      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);
      bVar12 = false;
      bVar14 = pcVar10 == (char *)0x0;
      if (!bVar14) {
        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);
        bVar12 = false;
        bVar14 = pbVar11 == (byte *)0x0;
        if (!bVar14) {
          *mangled = (char *)(pbVar4 + 1);
          bVar1 = pbVar4[1];
          if (bVar1 == 0x51) {
LAB_0048bf00:
            iVar2 = demangle_qualified(work,mangled,declp,0,1);
          }
          else {
            if (bVar1 != 0x74) {
              if (bVar1 == 0x4b) goto LAB_0048bf00;
              n = consume_count(mangled);
              if ((int)n < 0) {
                return 0;
              }
              pbVar4 = (byte *)*mangled;
              sVar5 = strlen((char *)pbVar4);
              lVar6 = (long)(int)n;
              if ((long)sVar5 < lVar6) {
                return 0;
              }
              bVar12 = n < 10;
              bVar14 = n == 10;
              if ((int)n < 0xb) {
                if (n != 0) goto LAB_0048bd6c;
              }
              else {
                lVar7 = 8;
                pbVar8 = pbVar4;
                pbVar9 = (byte *)"_GLOBAL_";
                do {
                  if (lVar7 == 0) break;
                  lVar7 = lVar7 + -1;
                  bVar12 = *pbVar8 < *pbVar9;
                  bVar14 = *pbVar8 == *pbVar9;
                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;
                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;
                } while (bVar14);
                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&
                    (pbVar4[8] == pbVar4[10])) &&
                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {
                  iVar2 = 1;
                  string_append(declp,"{anonymous}");
                  pbVar4 = (byte *)(*mangled + lVar6);
                  *mangled = (char *)pbVar4;
                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);
                  goto LAB_0048beab;
                }
LAB_0048bd6c:
                string_appendn(declp,(char *)pbVar4,n);
                pbVar4 = (byte *)*mangled;
              }
              pbVar4 = pbVar4 + lVar6;
              iVar2 = 1;
              *mangled = (char *)pbVar4;
              goto LAB_0048beab;
            }
            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);
          }
          if (iVar2 == 0) {
            return 0;
          }
          pbVar4 = (byte *)*mangled;
LAB_0048beab:
          if (pbVar11 != pbVar4) {
            return 0;
          }
          iVar3 = work->options;
          *mangled = (char *)(pbVar11 + 1);
          pcVar10 = ".";
          if ((iVar3 & 4) == 0) {
            pcVar10 = "::";
          }
          string_append(declp,pcVar10);
          pcVar10 = *mangled;
          sVar5 = strlen(pcVar10);
          iVar3 = (int)sVar5;
          if (iVar3 != 0) {
            string_appendn(declp,pcVar10,iVar3);
            pcVar10 = *mangled;
          }
          *mangled = pcVar10 + iVar3;
          return iVar2;
        }
      }
    }
    else {
      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);
      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {
        *mangled = (char *)(pbVar4 + 3);
        work->destructor = work->destructor + 1;
        return 1;
      }
      if (bVar1 == 0x5f) {
        bVar12 = pbVar4[2] < 0x76;
        bVar14 = pbVar4[2] == 0x76;
        if (bVar14) {
          bVar12 = pbVar4[3] < 0x74;
          bVar14 = pbVar4[3] == 0x74;
          if (bVar14) {
            bVar12 = pbVar4[4] < 0x5f;
            bVar14 = pbVar4[4] == 0x5f;
            if (bVar14) {
              pbVar11 = pbVar4 + 5;
LAB_0048bbeb:
              *mangled = (char *)pbVar11;
              iVar2 = 1;
LAB_0048bbfb:
              bVar15 = *pbVar11;
              do {
                if (bVar15 == 0) {
                  string_append(declp," virtual table");
                  return iVar2;
                }
                if (bVar15 == 0x51) {
LAB_0048bf60:
                  iVar2 = demangle_qualified(work,mangled,declp,0,1);
LAB_0048bf3f:
                  pbVar11 = (byte *)*mangled;
                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);
                  if (iVar2 == 0) {
                    return 0;
                  }
                }
                else {
                  if (bVar15 == 0x74) {
                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);
                    goto LAB_0048bf3f;
                  }
                  if (bVar15 == 0x4b) goto LAB_0048bf60;
                  if ((_sch_istable[bVar15] & 4) == 0) {
                    sVar5 = strcspn((char *)pbVar11,cplus_markers);
                    iVar3 = (int)sVar5;
LAB_0048bc3f:
                    if (iVar3 != 0) {
                      string_appendn(declp,(char *)pbVar11,iVar3);
                      pbVar11 = (byte *)*mangled;
                    }
                    pbVar11 = pbVar11 + iVar3;
                    *mangled = (char *)pbVar11;
                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);
                  }
                  else {
                    iVar3 = consume_count(mangled);
                    pbVar11 = (byte *)*mangled;
                    sVar5 = strlen((char *)pbVar11);
                    if (iVar3 <= (int)sVar5) {
                      if (iVar3 == -1) {
                        return 0;
                      }
                      goto LAB_0048bc3f;
                    }
                    iVar2 = 1;
                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);
                  }
                }
                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;
                if (pbVar11 != pbVar4) {
                  return 0;
                }
                pcVar10 = "::";
                if ((work->options & 4) != 0) {
                  pcVar10 = ".";
                }
                string_append(declp,pcVar10);
                pbVar11 = (byte *)(*mangled + 1);
                *mangled = (char *)pbVar11;
                bVar15 = *pbVar11;
              } while( true );
            }
          }
        }
      }
      else {
        if (bVar1 != 0x76) goto LAB_0048bcb8;
        bVar12 = pbVar4[2] < 0x74;
        bVar14 = pbVar4[2] == 0x74;
        if (bVar14) {
          bVar12 = false;
          bVar14 = pbVar4[3] == 0;
          if (!bVar14) {
            pbVar11 = pbVar4 + 4;
            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);
            bVar12 = false;
            bVar14 = pcVar10 == (char *)0x0;
            if (!bVar14) goto LAB_0048bbeb;
          }
        }
      }
    }
  }
  lVar6 = 8;
  pbVar11 = pbVar4;
  pbVar8 = (byte *)"__thunk_";
  do {
    if (lVar6 == 0) break;
    lVar6 = lVar6 + -1;
    bVar12 = *pbVar11 < *pbVar8;
    bVar14 = *pbVar11 == *pbVar8;
    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;
    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;
  } while (bVar14);
  bVar13 = false;
  bVar12 = (!bVar12 && !bVar14) == bVar12;
  if (bVar12) {
    *mangled = (char *)(pbVar4 + 8);
    iVar2 = consume_count(mangled);
    if (iVar2 == -1) {
      return 0;
    }
    if (**mangled != '_') {
      return 0;
    }
    pcVar10 = *mangled + 1;
    *mangled = pcVar10;
    pcVar10 = internal_cplus_demangle(work,pcVar10);
    if (pcVar10 == (char *)0x0) {
      return 0;
    }
    sprintf(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);
    if (buf[0] != '\0') {
      string_append(declp,buf);
    }
    if (*pcVar10 != '\0') {
      string_append(declp,pcVar10);
    }
    free(pcVar10);
    pcVar10 = *mangled;
    sVar5 = strlen(pcVar10);
    *mangled = pcVar10 + (int)sVar5;
    return 1;
  }
  lVar6 = 3;
  pbVar11 = pbVar4;
  pbVar8 = &DAT_00588187;
  do {
    if (lVar6 == 0) break;
    lVar6 = lVar6 + -1;
    bVar13 = *pbVar11 < *pbVar8;
    bVar12 = *pbVar11 == *pbVar8;
    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;
    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;
  } while (bVar12);
  if ((!bVar13 && !bVar12) != bVar13) {
    return 0;
  }
  bVar15 = pbVar4[3];
  if ((bVar15 != 0x69) && (bVar15 != 0x66)) {
    return 0;
  }
  pcVar10 = " type_info node";
  if (bVar15 != 0x69) {
    pcVar10 = " type_info function";
  }
  *mangled = (char *)(pbVar4 + 4);
  bVar15 = pbVar4[4];
  if (bVar15 != 0x51) {
    if (bVar15 == 0x74) {
      iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);
      goto LAB_0048bb64;
    }
    if (bVar15 != 0x4b) {
      iVar2 = do_type(work,mangled,declp);
      goto LAB_0048bb64;
    }
  }
  iVar2 = demangle_qualified(work,mangled,declp,0,1);
LAB_0048bb64:
  if ((iVar2 != 0) && (**mangled == '\0')) {
    if (*pcVar10 == '\0') {
      return iVar2;
    }
    string_append(declp,pcVar10);
    return iVar2;
  }
  return 0;
LAB_0048bf80:
  pbVar11 = (byte *)*mangled;
  goto LAB_0048bbfb;
}



int FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  byte *pbVar5;
  size_t sVar6;
  long lVar7;
  ulong uVar8;
  ulong uVar9;
  byte *pbVar10;
  byte *pbVar11;
  char *pcVar12;
  byte *pbVar13;
  bool bVar14;
  bool bVar15;
  bool bVar16;
  byte bVar17;
  char local_78 [72];
  
  bVar17 = 0;
  pbVar5 = (byte *)*param_2;
  bVar14 = *pbVar5 < 0x5f;
  bVar16 = *pbVar5 == 0x5f;
  if (bVar16) {
    bVar1 = pbVar5[1];
    if (bVar1 == 0) {
LAB_0048bcb8:
      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);
      bVar14 = false;
      bVar16 = pcVar12 == (char *)0x0;
      if (!bVar16) {
        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);
        bVar14 = false;
        bVar16 = pbVar13 == (byte *)0x0;
        if (!bVar16) {
          *param_2 = (long)(pbVar5 + 1);
          bVar1 = pbVar5[1];
          if (bVar1 == 0x51) {
LAB_0048bf00:
            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);
          }
          else {
            if (bVar1 != 0x74) {
              if (bVar1 == 0x4b) goto LAB_0048bf00;
              uVar3 = FUN_00486160(param_2);
              if ((int)uVar3 < 0) {
                return 0;
              }
              pbVar5 = (byte *)*param_2;
              sVar6 = strlen((char *)pbVar5);
              uVar9 = (ulong)(int)uVar3;
              if ((long)sVar6 < (long)uVar9) {
                return 0;
              }
              bVar14 = uVar3 < 10;
              bVar16 = uVar3 == 10;
              uVar8 = uVar9;
              if ((int)uVar3 < 0xb) {
                if (uVar3 != 0) goto LAB_0048bd6c;
              }
              else {
                lVar7 = 8;
                pbVar10 = pbVar5;
                pbVar11 = (byte *)"_GLOBAL_";
                do {
                  if (lVar7 == 0) break;
                  lVar7 = lVar7 + -1;
                  bVar14 = *pbVar10 < *pbVar11;
                  bVar16 = *pbVar10 == *pbVar11;
                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;
                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;
                } while (bVar16);
                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&
                   (pbVar5[8] == pbVar5[10])) {
                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);
                  uVar8 = (ulong)uVar3;
                  if (pcVar12 != (char *)0x0) {
                    iVar2 = 1;
                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);
                    pbVar5 = (byte *)(uVar9 + *param_2);
                    *param_2 = (long)pbVar5;
                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);
                    goto LAB_0048beab;
                  }
                }
LAB_0048bd6c:
                FUN_004864a0(param_3,pbVar5,uVar8);
                pbVar5 = (byte *)*param_2;
              }
              pbVar5 = pbVar5 + uVar9;
              iVar2 = 1;
              *param_2 = (long)pbVar5;
              goto LAB_0048beab;
            }
            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);
          }
          if (iVar2 == 0) {
            return 0;
          }
          pbVar5 = (byte *)*param_2;
LAB_0048beab:
          if (pbVar13 != pbVar5) {
            return 0;
          }
          bVar17 = *param_1;
          *param_2 = (long)(pbVar13 + 1);
          pcVar12 = ".";
          if ((bVar17 & 4) == 0) {
            pcVar12 = "::";
          }
          FUN_00486550(param_3,pcVar12);
          pcVar12 = (char *)*param_2;
          sVar6 = strlen(pcVar12);
          if ((int)sVar6 != 0) {
            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);
            pcVar12 = (char *)*param_2;
          }
          *param_2 = (long)(pcVar12 + (int)sVar6);
          return iVar2;
        }
      }
    }
    else {
      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);
      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {
        *param_2 = (long)(pbVar5 + 3);
        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;
        return 1;
      }
      if (bVar1 == 0x5f) {
        bVar14 = pbVar5[2] < 0x76;
        bVar16 = pbVar5[2] == 0x76;
        if (bVar16) {
          bVar14 = pbVar5[3] < 0x74;
          bVar16 = pbVar5[3] == 0x74;
          if (bVar16) {
            bVar14 = pbVar5[4] < 0x5f;
            bVar16 = pbVar5[4] == 0x5f;
            if (bVar16) {
              pbVar13 = pbVar5 + 5;
LAB_0048bbeb:
              *param_2 = (long)pbVar13;
              iVar2 = 1;
LAB_0048bbfb:
              bVar17 = *pbVar13;
              do {
                if (bVar17 == 0) {
                  FUN_00486550(param_3," virtual table");
                  return iVar2;
                }
                if (bVar17 == 0x51) {
LAB_0048bf60:
                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);
LAB_0048bf3f:
                  pbVar13 = (byte *)*param_2;
                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);
                  if (iVar2 == 0) {
                    return 0;
                  }
                }
                else {
                  if (bVar17 == 0x74) {
                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);
                    goto LAB_0048bf3f;
                  }
                  if (bVar17 == 0x4b) goto LAB_0048bf60;
                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {
                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);
                    iVar4 = (int)sVar6;
LAB_0048bc3f:
                    if (iVar4 != 0) {
                      FUN_004864a0(param_3,pbVar13,iVar4);
                      pbVar13 = (byte *)*param_2;
                    }
                    pbVar13 = pbVar13 + iVar4;
                    *param_2 = (long)pbVar13;
                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);
                  }
                  else {
                    iVar4 = FUN_00486160(param_2);
                    pbVar13 = (byte *)*param_2;
                    sVar6 = strlen((char *)pbVar13);
                    if (iVar4 <= (int)sVar6) {
                      if (iVar4 == -1) {
                        return 0;
                      }
                      goto LAB_0048bc3f;
                    }
                    iVar2 = 1;
                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);
                  }
                }
                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;
                if (pbVar13 != pbVar5) {
                  return 0;
                }
                pcVar12 = "::";
                if ((*param_1 & 4) != 0) {
                  pcVar12 = ".";
                }
                FUN_00486550(param_3,pcVar12);
                pbVar13 = (byte *)(*param_2 + 1);
                *param_2 = (long)pbVar13;
                bVar17 = *pbVar13;
              } while( true );
            }
          }
        }
      }
      else {
        if (bVar1 != 0x76) goto LAB_0048bcb8;
        bVar14 = pbVar5[2] < 0x74;
        bVar16 = pbVar5[2] == 0x74;
        if (bVar16) {
          bVar14 = false;
          bVar16 = pbVar5[3] == 0;
          if (!bVar16) {
            pbVar13 = pbVar5 + 4;
            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);
            bVar14 = false;
            bVar16 = pcVar12 == (char *)0x0;
            if (!bVar16) goto LAB_0048bbeb;
          }
        }
      }
    }
  }
  lVar7 = 8;
  pbVar13 = pbVar5;
  pbVar10 = (byte *)"__thunk_";
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    bVar14 = *pbVar13 < *pbVar10;
    bVar16 = *pbVar13 == *pbVar10;
    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;
    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;
  } while (bVar16);
  bVar15 = false;
  bVar14 = (!bVar14 && !bVar16) == bVar14;
  if (bVar14) {
    *param_2 = (long)(pbVar5 + 8);
    iVar2 = FUN_00486160(param_2);
    if (iVar2 == -1) {
      return 0;
    }
    if (*(char *)*param_2 != '_') {
      return 0;
    }
    *param_2 = (long)((char *)*param_2 + 1);
    pcVar12 = (char *)FUN_0048c0f0(param_1);
    if (pcVar12 == (char *)0x0) {
      return 0;
    }
    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);
    if (local_78[0] != '\0') {
      FUN_00486550(param_3,local_78);
    }
    if (*pcVar12 != '\0') {
      FUN_00486550(param_3,pcVar12);
    }
    free(pcVar12);
    pcVar12 = (char *)*param_2;
    sVar6 = strlen(pcVar12);
    *param_2 = (long)(pcVar12 + (int)sVar6);
    return 1;
  }
  lVar7 = 3;
  pbVar13 = pbVar5;
  pbVar10 = &DAT_00588187;
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    bVar15 = *pbVar13 < *pbVar10;
    bVar14 = *pbVar13 == *pbVar10;
    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;
    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;
  } while (bVar14);
  if ((!bVar15 && !bVar14) != bVar15) {
    return 0;
  }
  bVar17 = pbVar5[3];
  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {
    return 0;
  }
  pcVar12 = " type_info node";
  if (bVar17 != 0x69) {
    pcVar12 = " type_info function";
  }
  *param_2 = (long)(pbVar5 + 4);
  bVar17 = pbVar5[4];
  if (bVar17 != 0x51) {
    if (bVar17 == 0x74) {
      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);
      goto LAB_0048bb64;
    }
    if (bVar17 != 0x4b) {
      iVar2 = FUN_00487a30(param_1,param_2,param_3);
      goto LAB_0048bb64;
    }
  }
  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);
LAB_0048bb64:
  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {
    if (*pcVar12 == '\0') {
      return iVar2;
    }
    FUN_00486550(param_3,pcVar12);
    return iVar2;
  }
  return 0;
LAB_0048bf80:
  pbVar13 = (byte *)*param_2;
  goto LAB_0048bbfb;
}


PUSH R15
PUSH R14
MOV R14,RSI
PUSH R13
PUSH R12
MOV R12,RDX
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x58
MOV RBX,qword ptr [RSI]
CMP byte ptr [RBX],0x5f
JZ 0x0048bb90
MOV ECX,0x8
LEA RDI,[0x58817e]
MOV RSI,RBX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0048bd90
MOV ECX,0x3
LEA RDI,[0x588187]
MOV RSI,RBX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0048bb10
XOR R15D,R15D
ADD RSP,0x58
MOV EAX,R15D
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOVZX EAX,byte ptr [RBX + 0x3]
CMP AL,0x69
JZ 0x0048bb1c
CMP AL,0x66
JNZ 0x0048bafb
CMP AL,0x69
LEA R13,[0x58814d]
LEA RAX,[0x58815d]
CMOVNZ R13,RAX
LEA RAX,[RBX + 0x4]
MOV qword ptr [R14],RAX
MOVZX EAX,byte ptr [RBX + 0x4]
CMP AL,0x51
JZ 0x0048bf90
CMP AL,0x74
JZ 0x0048bfb0
CMP AL,0x4b
JZ 0x0048bf90
MOV RDX,R12
MOV RSI,R14
MOV RDI,RBP
CALL 0x00487a30
MOV R15D,EAX
TEST R15D,R15D
JZ 0x0048bafb
MOV RAX,qword ptr [R14]
CMP byte ptr [RAX],0x0
JNZ 0x0048bafb
CMP byte ptr [R13],0x0
JZ 0x0048bafe
MOV RSI,R13
MOV RDI,R12
CALL 0x00486550
JMP 0x0048bafe
MOVSX R15D,byte ptr [RBX + 0x1]
MOV R13D,R15D
TEST R15B,R15B
JZ 0x0048bcb8
MOV ESI,R15D
LEA RDI,[0x67cb10]
CALL 0x001776e0
TEST RAX,RAX
JZ 0x0048bbbf
CMP byte ptr [RBX + 0x2],0x5f
JZ 0x0048bfd8
CMP R13B,0x5f
JNZ 0x0048be38
CMP byte ptr [RBX + 0x2],0x76
JNZ 0x0048bac3
CMP byte ptr [RBX + 0x3],0x74
JNZ 0x0048bac3
CMP byte ptr [RBX + 0x4],0x5f
JNZ 0x0048bac3
LEA R13,[RBX + 0x5]
MOV qword ptr [R14],R13
MOV R15D,0x1
LEA RBX,[0x67cb10]
MOVZX EAX,byte ptr [R13]
TEST AL,AL
JZ 0x0048bca0
CMP AL,0x51
JZ 0x0048bf60
CMP AL,0x74
JZ 0x0048bf20
CMP AL,0x4b
JZ 0x0048bf60
LEA RDX,[0x58aa80]
TEST byte ptr [RDX + RAX*0x2],0x4
JNZ 0x0048bff0
MOV RSI,RBX
MOV RDI,R13
CALL 0x00177970
MOVSXD R9,EAX
TEST R9D,R9D
JNZ 0x0048c030
ADD R13,R9
MOV RSI,RBX
MOV qword ptr [R14],R13
MOV RDI,R13
CALL 0x001772b0
TEST RAX,RAX
JZ 0x0048bf80
CMP R13,RAX
JNZ 0x0048bafb
LEA RAX,[0x574c08]
TEST byte ptr [RBP],0x4
LEA RSI,[0x589519]
MOV RDI,R12
CMOVNZ RSI,RAX
CALL 0x00486550
MOV RAX,qword ptr [R14]
LEA R13,[RAX + 0x1]
MOV qword ptr [R14],R13
MOVZX EAX,byte ptr [R13]
TEST AL,AL
JNZ 0x0048bc08
LEA RSI,[0x58818b]
MOV RDI,R12
CALL 0x00486550
JMP 0x0048bafe
MOV ESI,R15D
LEA RDI,[0x588171]
CALL 0x001776e0
TEST RAX,RAX
JZ 0x0048bac3
LEA RSI,[0x67cb10]
MOV RDI,RBX
CALL 0x001772b0
MOV R13,RAX
TEST RAX,RAX
JZ 0x0048bac3
LEA RAX,[RBX + 0x1]
MOV qword ptr [R14],RAX
MOVZX EAX,byte ptr [RBX + 0x1]
CMP AL,0x51
JZ 0x0048bf00
CMP AL,0x74
JZ 0x0048be80
CMP AL,0x4b
JZ 0x0048bf00
MOV RDI,R14
CALL 0x00486160
TEST EAX,EAX
MOV dword ptr [RSP + 0xc],EAX
JS 0x0048bafb
MOV R15,qword ptr [R14]
MOV RDI,R15
CALL 0x00177490
MOVSXD RBX,dword ptr [RSP + 0xc]
MOV RDX,RBX
CMP RBX,RAX
JG 0x0048bafb
CMP EBX,0xa
JLE 0x0048c050
MOV ECX,0x8
LEA RDI,[0x5880ef]
MOV RSI,R15
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0048bd6c
CMP byte ptr [R15 + 0x9],0x4e
JZ 0x0048c084
MOV RSI,R15
MOV RDI,R12
CALL 0x004864a0
MOV R15,qword ptr [R14]
ADD RBX,R15
MOV R15D,0x1
MOV qword ptr [R14],RBX
JMP 0x0048beab
ADD RBX,0x8
MOV RDI,R14
MOV qword ptr [R14],RBX
CALL 0x00486160
MOV EBX,EAX
CMP EAX,-0x1
JZ 0x0048bafb
MOV RSI,qword ptr [R14]
CMP byte ptr [RSI],0x5f
JNZ 0x0048bafb
ADD RSI,0x1
MOV RDI,RBP
MOV qword ptr [R14],RSI
CALL 0x0048c0f0
MOV RBP,RAX
TEST RAX,RAX
JZ 0x0048bafb
MOV EDX,EBX
LEA RBX,[RSP + 0x10]
LEA RSI,[0x588a70]
XOR EAX,EAX
NEG EDX
MOV RDI,RBX
CALL 0x00177590
CMP byte ptr [RSP + 0x10],0x0
JZ 0x0048bdfd
MOV RSI,RBX
MOV RDI,R12
CALL 0x00486550
CMP byte ptr [RBP],0x0
JZ 0x0048be0e
MOV RSI,RBP
MOV RDI,R12
CALL 0x00486550
MOV RDI,RBP
MOV R15D,0x1
CALL 0x00177470
MOV RBX,qword ptr [R14]
MOV RDI,RBX
CALL 0x00177490
CDQE
ADD RBX,RAX
MOV qword ptr [R14],RBX
JMP 0x0048bafe
CMP R13B,0x76
JNZ 0x0048bcb8
CMP byte ptr [RBX + 0x2],0x74
JNZ 0x0048bac3
MOVSX ESI,byte ptr [RBX + 0x3]
TEST SIL,SIL
JZ 0x0048bac3
LEA RDI,[0x67cb10]
LEA R13,[RBX + 0x4]
CALL 0x001776e0
TEST RAX,RAX
JNZ 0x0048bbeb
JMP 0x0048bac3
MOV R9D,0x1
XOR ECX,ECX
MOV RDX,R12
MOV RSI,R14
MOV R8D,0x1
MOV RDI,RBP
CALL 0x004897d0
MOV R15D,EAX
TEST R15D,R15D
JZ 0x0048bafb
MOV RBX,qword ptr [R14]
CMP R13,RBX
JNZ 0x0048bafb
ADD R13,0x1
LEA RAX,[0x589519]
TEST byte ptr [RBP],0x4
MOV RDI,R12
MOV qword ptr [R14],R13
LEA RSI,[0x574c08]
CMOVZ RSI,RAX
CALL 0x00486550
MOV RBX,qword ptr [R14]
MOV RDI,RBX
CALL 0x00177490
MOV RBP,RAX
TEST EAX,EAX
JNZ 0x0048c06f
MOVSXD RBP,EBP
ADD RBX,RBP
MOV qword ptr [R14],RBX
JMP 0x0048bafe
MOV R8D,0x1
XOR ECX,ECX
MOV RDX,R12
MOV RSI,R14
MOV RDI,RBP
CALL 0x00489ed0
MOV R15D,EAX
JMP 0x0048be9f
MOV R9D,0x1
XOR ECX,ECX
MOV RDX,R12
MOV RSI,R14
MOV R8D,0x1
MOV RDI,RBP
CALL 0x004897d0
MOV R15D,EAX
MOV R13,qword ptr [R14]
MOV RSI,RBX
MOV RDI,R13
CALL 0x001772b0
TEST R15D,R15D
JNZ 0x0048bc59
JMP 0x0048bafb
MOV R8D,0x1
XOR ECX,ECX
MOV RDX,R12
MOV RSI,R14
MOV RDI,RBP
CALL 0x00489ed0
MOV R15D,EAX
JMP 0x0048bf3f
MOV R13,qword ptr [R14]
JMP 0x0048bbfb
MOV R8D,0x1
XOR ECX,ECX
MOV RDX,R12
MOV RSI,R14
MOV RDI,RBP
CALL 0x00489ed0
MOV R15D,EAX
JMP 0x0048bb64
MOV R9D,0x1
XOR ECX,ECX
MOV RDX,R12
MOV RSI,R14
MOV R8D,0x1
MOV RDI,RBP
CALL 0x004897d0
MOV R15D,EAX
JMP 0x0048bb64
ADD RBX,0x3
MOV R15D,0x1
MOV qword ptr [R14],RBX
ADD dword ptr [RBP + 0x3c],0x1
JMP 0x0048bafe
MOV RDI,R14
CALL 0x00486160
MOV R13,qword ptr [R14]
MOV dword ptr [RSP + 0xc],EAX
MOV RDI,R13
CALL 0x00177490
MOVSXD R9,dword ptr [RSP + 0xc]
CMP R9D,EAX
JLE 0x0048c060
MOV RSI,RBX
MOV RDI,R13
MOV R15D,0x1
CALL 0x001772b0
JMP 0x0048bc59
MOV EDX,R9D
MOV RSI,R13
MOV RDI,R12
MOV dword ptr [RSP + 0xc],R9D
CALL 0x004864a0
MOV R13,qword ptr [R14]
MOVSXD R9,dword ptr [RSP + 0xc]
JMP 0x0048bc48
TEST EBX,EBX
JZ 0x0048bd7a
JMP 0x0048bd6c
CMP R9D,-0x1
JNZ 0x0048bc3f
JMP 0x0048bafb
MOV RSI,RBX
MOV EDX,EAX
MOV RDI,R12
CALL 0x004864a0
MOV RBX,qword ptr [R14]
JMP 0x0048beef
MOVZX EAX,byte ptr [R15 + 0x8]
CMP AL,byte ptr [R15 + 0xa]
JNZ 0x0048bd6c
MOVSX ESI,AL
LEA RDI,[0x67cb10]
CALL 0x001776e0
MOV EDX,dword ptr [RSP + 0xc]
TEST RAX,RAX
JZ 0x0048bd6c
LEA RSI,[0x5880f8]
MOV RDI,R12
MOV R15D,0x1
CALL 0x00486550
ADD RBX,qword ptr [R14]
LEA RSI,[0x67cb10]
MOV qword ptr [R14],RBX
MOV RDI,RBX
CALL 0x001772b0
MOV R13,RAX
JMP 0x0048beab
(translation_unit "int FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char local_78 [72];\n  \n  bVar17 = 0;\n  pbVar5 = (byte *)*param_2;\n  bVar14 = *pbVar5 < 0x5f;\n  bVar16 = *pbVar5 == 0x5f;\n  if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar7 = 8;\n  pbVar13 = pbVar5;\n  pbVar10 = (byte *)"__thunk_";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }\n  lVar7 = 3;\n  pbVar13 = pbVar5;\n  pbVar10 = &DAT_00588187;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);\n  if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }\n  bVar17 = pbVar5[3];\n  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }\n  pcVar12 = " type_info node";\n  if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }\n  *param_2 = (long)(pbVar5 + 4);\n  bVar17 = pbVar5[4];\n  if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar13 = (byte *)*param_2;\n  goto LAB_0048bbfb;\n}\n\n" (function_definition "int FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char local_78 [72];\n  \n  bVar17 = 0;\n  pbVar5 = (byte *)*param_2;\n  bVar14 = *pbVar5 < 0x5f;\n  bVar16 = *pbVar5 == 0x5f;\n  if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar7 = 8;\n  pbVar13 = pbVar5;\n  pbVar10 = (byte *)"__thunk_";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }\n  lVar7 = 3;\n  pbVar13 = pbVar5;\n  pbVar10 = &DAT_00588187;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);\n  if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }\n  bVar17 = pbVar5[3];\n  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }\n  pcVar12 = " type_info node";\n  if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }\n  *param_2 = (long)(pbVar5 + 4);\n  bVar17 = pbVar5[4];\n  if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar13 = (byte *)*param_2;\n  goto LAB_0048bbfb;\n}" primitive_type (function_declarator "FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)" identifier (parameter_list "(byte *param_1,long *param_2,undefined8 param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char local_78 [72];\n  \n  bVar17 = 0;\n  pbVar5 = (byte *)*param_2;\n  bVar14 = *pbVar5 < 0x5f;\n  bVar16 = *pbVar5 == 0x5f;\n  if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar7 = 8;\n  pbVar13 = pbVar5;\n  pbVar10 = (byte *)"__thunk_";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }\n  lVar7 = 3;\n  pbVar13 = pbVar5;\n  pbVar10 = &DAT_00588187;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);\n  if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }\n  bVar17 = pbVar5[3];\n  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }\n  pcVar12 = " type_info node";\n  if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }\n  *param_2 = (long)(pbVar5 + 4);\n  bVar17 = pbVar5[4];\n  if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar13 = (byte *)*param_2;\n  goto LAB_0048bbfb;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "char local_78 [72];" primitive_type (array_declarator "local_78 [72]" identifier [ number_literal ]) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "bVar14 = *pbVar5 < 0x5f;" (assignment_expression "bVar14 = *pbVar5 < 0x5f" identifier = (binary_expression "*pbVar5 < 0x5f" (pointer_expression "*pbVar5" * identifier) < number_literal)) ;) (expression_statement "bVar16 = *pbVar5 == 0x5f;" (assignment_expression "bVar16 = *pbVar5 == 0x5f" identifier = (binary_expression "*pbVar5 == 0x5f" (pointer_expression "*pbVar5" * identifier) == number_literal)) ;) (if_statement "if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }" { (labeled_statement "LAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);" statement_identifier : (expression_statement "pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);" (assignment_expression "pcVar12 = strchr("0123456789Qt",(int)(char)bVar1)" identifier = (call_expression "strchr("0123456789Qt",(int)(char)bVar1)" identifier (argument_list "("0123456789Qt",(int)(char)bVar1)" ( (string_literal ""0123456789Qt"" " string_content ") , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )))) ;)) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = pcVar12 == (char *)0x0;" (assignment_expression "bVar16 = pcVar12 == (char *)0x0" identifier = (binary_expression "pcVar12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }" { (expression_statement "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);" (assignment_expression "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar5,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar5,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = pbVar13 == (byte *)0x0;" (assignment_expression "bVar16 = pbVar13 == (byte *)0x0" identifier = (binary_expression "pbVar13 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }" { (expression_statement "*param_2 = (long)(pbVar5 + 1);" (assignment_expression "*param_2 = (long)(pbVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar5 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 1)" ( (binary_expression "pbVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" if (parenthesized_expression "(bVar1 == 0x51)" ( (binary_expression "bVar1 == 0x51" identifier == number_literal) )) (compound_statement "{\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }" { (labeled_statement "LAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" statement_identifier : (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier = (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier (argument_list "(param_1,param_2,param_3,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;)) }) (else_clause "else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" else (compound_statement "{\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" { (if_statement "if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }" if (parenthesized_expression "(bVar1 != 0x74)" ( (binary_expression "bVar1 != 0x74" identifier != number_literal) )) (compound_statement "{\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }" { (if_statement "if (bVar1 == 0x4b) goto LAB_0048bf00;" if (parenthesized_expression "(bVar1 == 0x4b)" ( (binary_expression "bVar1 == 0x4b" identifier == number_literal) )) (goto_statement "goto LAB_0048bf00;" goto statement_identifier ;)) (expression_statement "uVar3 = FUN_00486160(param_2);" (assignment_expression "uVar3 = FUN_00486160(param_2)" identifier = (call_expression "FUN_00486160(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if ((int)uVar3 < 0) {\n                return 0;\n              }" if (parenthesized_expression "((int)uVar3 < 0)" ( (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "sVar6 = strlen((char *)pbVar5);" (assignment_expression "sVar6 = strlen((char *)pbVar5)" identifier = (call_expression "strlen((char *)pbVar5)" identifier (argument_list "((char *)pbVar5)" ( (cast_expression "(char *)pbVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "uVar9 = (ulong)(int)uVar3;" (assignment_expression "uVar9 = (ulong)(int)uVar3" identifier = (cast_expression "(ulong)(int)uVar3" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }" if (parenthesized_expression "((long)sVar6 < (long)uVar9)" ( (binary_expression "(long)sVar6 < (long)uVar9" (cast_expression "(long)sVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < (cast_expression "(long)uVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar14 = uVar3 < 10;" (assignment_expression "bVar14 = uVar3 < 10" identifier = (binary_expression "uVar3 < 10" identifier < number_literal)) ;) (expression_statement "bVar16 = uVar3 == 10;" (assignment_expression "bVar16 = uVar3 == 10" identifier = (binary_expression "uVar3 == 10" identifier == number_literal)) ;) (expression_statement "uVar8 = uVar9;" (assignment_expression "uVar8 = uVar9" identifier = identifier) ;) (if_statement "if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" if (parenthesized_expression "((int)uVar3 < 0xb)" ( (binary_expression "(int)uVar3 < 0xb" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }" { (if_statement "if (uVar3 != 0) goto LAB_0048bd6c;" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0048bd6c;" goto statement_identifier ;)) }) (else_clause "else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" else (compound_statement "{\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" { (expression_statement "lVar7 = 8;" (assignment_expression "lVar7 = 8" identifier = number_literal) ;) (expression_statement "pbVar10 = pbVar5;" (assignment_expression "pbVar10 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar11 = (byte *)"_GLOBAL_";" (assignment_expression "pbVar11 = (byte *)"_GLOBAL_"" identifier = (cast_expression "(byte *)"_GLOBAL_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_"" " string_content "))) ;) (do_statement "do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);" do (compound_statement "{\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar10 < *pbVar11;" (assignment_expression "bVar14 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar16 = *pbVar10 == *pbVar11;" (assignment_expression "bVar16 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (if_statement "if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }" if (parenthesized_expression "((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10]))" ( (binary_expression "(((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])" (parenthesized_expression "(((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e))" ( (binary_expression "((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)" (parenthesized_expression "((!bVar14 && !bVar16) == bVar14)" ( (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier) )) && (parenthesized_expression "(pbVar5[9] == 0x4e)" ( (binary_expression "pbVar5[9] == 0x4e" (subscript_expression "pbVar5[9]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(pbVar5[8] == pbVar5[10])" ( (binary_expression "pbVar5[8] == pbVar5[10]" (subscript_expression "pbVar5[8]" identifier [ number_literal ]) == (subscript_expression "pbVar5[10]" identifier [ number_literal ])) ))) )) (compound_statement "{\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }" { (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8])" identifier = (call_expression "strchr(&DAT_0067cb10,(int)(char)pbVar5[8])" identifier (argument_list "(&DAT_0067cb10,(int)(char)pbVar5[8])" ( (pointer_expression "&DAT_0067cb10" & identifier) , (cast_expression "(int)(char)pbVar5[8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar5[8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar5[8]" identifier [ number_literal ]))) )))) ;) (expression_statement "uVar8 = (ulong)uVar3;" (assignment_expression "uVar8 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }" if (parenthesized_expression "(pcVar12 != (char *)0x0)" ( (binary_expression "pcVar12 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);" (call_expression "FUN_00486550(param_3,"{anonymous}",(ulong)uVar3)" identifier (argument_list "(param_3,"{anonymous}",(ulong)uVar3)" ( identifier , (string_literal ""{anonymous}"" " string_content ") , (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pbVar5 = (byte *)(uVar9 + *param_2);" (assignment_expression "pbVar5 = (byte *)(uVar9 + *param_2)" identifier = (cast_expression "(byte *)(uVar9 + *param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + *param_2)" ( (binary_expression "uVar9 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) )))) ;) (expression_statement "*param_2 = (long)pbVar5;" (assignment_expression "*param_2 = (long)pbVar5" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);" (assignment_expression "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar5,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar5,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) (goto_statement "goto LAB_0048beab;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);" statement_identifier : (expression_statement "FUN_004864a0(param_3,pbVar5,uVar8);" (call_expression "FUN_004864a0(param_3,pbVar5,uVar8)" identifier (argument_list "(param_3,pbVar5,uVar8)" ( identifier , identifier , identifier ))) ;)) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) }))) (expression_statement "pbVar5 = pbVar5 + uVar9;" (assignment_expression "pbVar5 = pbVar5 + uVar9" identifier = (binary_expression "pbVar5 + uVar9" identifier + identifier)) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "*param_2 = (long)pbVar5;" (assignment_expression "*param_2 = (long)pbVar5" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (goto_statement "goto LAB_0048beab;" goto statement_identifier ;) })) (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier = (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier (argument_list "(param_1,param_2,param_3,0,1,1)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal )))) ;) }))) (if_statement "if (iVar2 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (labeled_statement "LAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }" statement_identifier : (if_statement "if (pbVar13 != pbVar5) {\n            return 0;\n          }" if (parenthesized_expression "(pbVar13 != pbVar5)" ( (binary_expression "pbVar13 != pbVar5" identifier != identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) }))) (expression_statement "bVar17 = *param_1;" (assignment_expression "bVar17 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_2 = (long)(pbVar13 + 1);" (assignment_expression "*param_2 = (long)(pbVar13 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar13 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar13 + 1)" ( (binary_expression "pbVar13 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar12 = ".";" (assignment_expression "pcVar12 = "."" identifier = (string_literal ""."" " string_content ")) ;) (if_statement "if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }" if (parenthesized_expression "((bVar17 & 4) == 0)" ( (binary_expression "(bVar17 & 4) == 0" (parenthesized_expression "(bVar17 & 4)" ( (binary_expression "bVar17 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            pcVar12 = "::";\n          }" { (expression_statement "pcVar12 = "::";" (assignment_expression "pcVar12 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) })) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" identifier (argument_list "(param_3,pcVar12)" ( identifier , identifier ))) ;) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "sVar6 = strlen(pcVar12);" (assignment_expression "sVar6 = strlen(pcVar12)" identifier = (call_expression "strlen(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (if_statement "if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }" if (parenthesized_expression "((int)sVar6 != 0)" ( (binary_expression "(int)sVar6 != 0" (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }" { (expression_statement "FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);" (call_expression "FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff)" identifier (argument_list "(param_3,pcVar12,sVar6 & 0xffffffff)" ( identifier , identifier , (binary_expression "sVar6 & 0xffffffff" identifier & number_literal) ))) ;) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) })) (expression_statement "*param_2 = (long)(pcVar12 + (int)sVar6);" (assignment_expression "*param_2 = (long)(pcVar12 + (int)sVar6)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pcVar12 + (int)sVar6)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pcVar12 + (int)sVar6)" ( (binary_expression "pcVar12 + (int)sVar6" identifier + (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (return_statement "return iVar2;" return identifier ;) })) })) }) (else_clause "else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" else (compound_statement "{\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" { (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1)" identifier = (call_expression "strchr(&DAT_0067cb10,(int)(char)bVar1)" identifier (argument_list "(&DAT_0067cb10,(int)(char)bVar1)" ( (pointer_expression "&DAT_0067cb10" & identifier) , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )))) ;) (if_statement "if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }" if (parenthesized_expression "((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f))" ( (binary_expression "(pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)" (parenthesized_expression "(pcVar12 != (char *)0x0)" ( (binary_expression "pcVar12 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pbVar5[2] == 0x5f)" ( (binary_expression "pbVar5[2] == 0x5f" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }" { (expression_statement "*param_2 = (long)(pbVar5 + 3);" (assignment_expression "*param_2 = (long)(pbVar5 + 3)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar5 + 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 3)" ( (binary_expression "pbVar5 + 3" identifier + number_literal) )))) ;) (expression_statement "*(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;" (assignment_expression "*(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x3c) + 1" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (if_statement "if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 == 0x5f)" ( (binary_expression "bVar1 == 0x5f" identifier == number_literal) )) (compound_statement "{\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }" { (expression_statement "bVar14 = pbVar5[2] < 0x76;" (assignment_expression "bVar14 = pbVar5[2] < 0x76" identifier = (binary_expression "pbVar5[2] < 0x76" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar16 = pbVar5[2] == 0x76;" (assignment_expression "bVar16 = pbVar5[2] == 0x76" identifier = (binary_expression "pbVar5[2] == 0x76" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }" { (expression_statement "bVar14 = pbVar5[3] < 0x74;" (assignment_expression "bVar14 = pbVar5[3] < 0x74" identifier = (binary_expression "pbVar5[3] < 0x74" (subscript_expression "pbVar5[3]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar16 = pbVar5[3] == 0x74;" (assignment_expression "bVar16 = pbVar5[3] == 0x74" identifier = (binary_expression "pbVar5[3] == 0x74" (subscript_expression "pbVar5[3]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }" { (expression_statement "bVar14 = pbVar5[4] < 0x5f;" (assignment_expression "bVar14 = pbVar5[4] < 0x5f" identifier = (binary_expression "pbVar5[4] < 0x5f" (subscript_expression "pbVar5[4]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar16 = pbVar5[4] == 0x5f;" (assignment_expression "bVar16 = pbVar5[4] == 0x5f" identifier = (binary_expression "pbVar5[4] == 0x5f" (subscript_expression "pbVar5[4]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }" { (expression_statement "pbVar13 = pbVar5 + 5;" (assignment_expression "pbVar13 = pbVar5 + 5" identifier = (binary_expression "pbVar5 + 5" identifier + number_literal)) ;) (labeled_statement "LAB_0048bbeb:\n              *param_2 = (long)pbVar13;" statement_identifier : (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;)) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0048bbfb:\n              bVar17 = *pbVar13;" statement_identifier : (expression_statement "bVar17 = *pbVar13;" (assignment_expression "bVar17 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;)) (do_statement "do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );" do (compound_statement "{\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              }" { (if_statement "if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }" if (parenthesized_expression "(bVar17 == 0)" ( (binary_expression "bVar17 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }" { (expression_statement "FUN_00486550(param_3," virtual table");" (call_expression "FUN_00486550(param_3," virtual table")" identifier (argument_list "(param_3," virtual table")" ( identifier , (string_literal "" virtual table"" " string_content ") ))) ;) (return_statement "return iVar2;" return identifier ;) })) (if_statement "if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" if (parenthesized_expression "(bVar17 == 0x51)" ( (binary_expression "bVar17 == 0x51" identifier == number_literal) )) (compound_statement "{\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }" { (labeled_statement "LAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" statement_identifier : (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier = (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier (argument_list "(param_1,param_2,param_3,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;)) (labeled_statement "LAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;" statement_identifier : (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;)) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar13,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) (if_statement "if (iVar2 == 0) {\n                    return 0;\n                  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    return 0;\n                  }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" else (compound_statement "{\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" { (if_statement "if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }" if (parenthesized_expression "(bVar17 == 0x74)" ( (binary_expression "bVar17 == 0x74" identifier == number_literal) )) (compound_statement "{\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }" { (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier = (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier (argument_list "(param_1,param_2,param_3,0,1,1)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal )))) ;) (goto_statement "goto LAB_0048bf3f;" goto statement_identifier ;) })) (if_statement "if (bVar17 == 0x4b) goto LAB_0048bf60;" if (parenthesized_expression "(bVar17 == 0x4b)" ( (binary_expression "bVar17 == 0x4b" identifier == number_literal) )) (goto_statement "goto LAB_0048bf60;" goto statement_identifier ;)) (if_statement "if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" if (parenthesized_expression "(((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0)" ( (binary_expression "((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4)" ( (binary_expression "(&DAT_0058aa80)[(ulong)bVar17 * 2] & 4" (subscript_expression "(&DAT_0058aa80)[(ulong)bVar17 * 2]" (parenthesized_expression "(&DAT_0058aa80)" ( (pointer_expression "&DAT_0058aa80" & identifier) )) [ (binary_expression "(ulong)bVar17 * 2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" { (expression_statement "sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10)" identifier = (call_expression "strcspn((char *)pbVar13,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar13,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) )))) ;) (expression_statement "iVar4 = (int)sVar6;" (assignment_expression "iVar4 = (int)sVar6" identifier = (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" statement_identifier : (if_statement "if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" { (expression_statement "FUN_004864a0(param_3,pbVar13,iVar4);" (call_expression "FUN_004864a0(param_3,pbVar13,iVar4)" identifier (argument_list "(param_3,pbVar13,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) }))) (expression_statement "pbVar13 = pbVar13 + iVar4;" (assignment_expression "pbVar13 = pbVar13 + iVar4" identifier = (binary_expression "pbVar13 + iVar4" identifier + identifier)) ;) (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar13,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) }) (else_clause "else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" else (compound_statement "{\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" { (expression_statement "iVar4 = FUN_00486160(param_2);" (assignment_expression "iVar4 = FUN_00486160(param_2)" identifier = (call_expression "FUN_00486160(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "sVar6 = strlen((char *)pbVar13);" (assignment_expression "sVar6 = strlen((char *)pbVar13)" identifier = (call_expression "strlen((char *)pbVar13)" identifier (argument_list "((char *)pbVar13)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }" if (parenthesized_expression "(iVar4 <= (int)sVar6)" ( (binary_expression "iVar4 <= (int)sVar6" identifier <= (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }" { (if_statement "if (iVar4 == -1) {\n                        return 0;\n                      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n                        return 0;\n                      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0048bc3f;" goto statement_identifier ;) })) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar13,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) }))) }))) (if_statement "if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;" if (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0048bf80;" goto statement_identifier ;)) (if_statement "if (pbVar13 != pbVar5) {\n                  return 0;\n                }" if (parenthesized_expression "(pbVar13 != pbVar5)" ( (binary_expression "pbVar13 != pbVar5" identifier != identifier) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar12 = "::";" (assignment_expression "pcVar12 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) (if_statement "if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }" if (parenthesized_expression "((*param_1 & 4) != 0)" ( (binary_expression "(*param_1 & 4) != 0" (parenthesized_expression "(*param_1 & 4)" ( (binary_expression "*param_1 & 4" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                  pcVar12 = ".";\n                }" { (expression_statement "pcVar12 = ".";" (assignment_expression "pcVar12 = "."" identifier = (string_literal ""."" " string_content ")) ;) })) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" identifier (argument_list "(param_3,pcVar12)" ( identifier , identifier ))) ;) (expression_statement "pbVar13 = (byte *)(*param_2 + 1);" (assignment_expression "pbVar13 = (byte *)(*param_2 + 1)" identifier = (cast_expression "(byte *)(*param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 1)" ( (binary_expression "*param_2 + 1" (pointer_expression "*param_2" * identifier) + number_literal) )))) ;) (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "bVar17 = *pbVar13;" (assignment_expression "bVar17 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) })) }) (else_clause "else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" else (compound_statement "{\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" { (if_statement "if (bVar1 != 0x76) goto LAB_0048bcb8;" if (parenthesized_expression "(bVar1 != 0x76)" ( (binary_expression "bVar1 != 0x76" identifier != number_literal) )) (goto_statement "goto LAB_0048bcb8;" goto statement_identifier ;)) (expression_statement "bVar14 = pbVar5[2] < 0x74;" (assignment_expression "bVar14 = pbVar5[2] < 0x74" identifier = (binary_expression "pbVar5[2] < 0x74" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar16 = pbVar5[2] == 0x74;" (assignment_expression "bVar16 = pbVar5[2] == 0x74" identifier = (binary_expression "pbVar5[2] == 0x74" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }" { (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = pbVar5[3] == 0;" (assignment_expression "bVar16 = pbVar5[3] == 0" identifier = (binary_expression "pbVar5[3] == 0" (subscript_expression "pbVar5[3]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }" { (expression_statement "pbVar13 = pbVar5 + 4;" (assignment_expression "pbVar13 = pbVar5 + 4" identifier = (binary_expression "pbVar5 + 4" identifier + number_literal)) ;) (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3])" identifier = (call_expression "strchr(&DAT_0067cb10,(int)(char)pbVar5[3])" identifier (argument_list "(&DAT_0067cb10,(int)(char)pbVar5[3])" ( (pointer_expression "&DAT_0067cb10" & identifier) , (cast_expression "(int)(char)pbVar5[3]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar5[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar5[3]" identifier [ number_literal ]))) )))) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = pcVar12 == (char *)0x0;" (assignment_expression "bVar16 = pcVar12 == (char *)0x0" identifier = (binary_expression "pcVar12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar16) goto LAB_0048bbeb;" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (goto_statement "goto LAB_0048bbeb;" goto statement_identifier ;)) })) })) }))) }))) })) (expression_statement "lVar7 = 8;" (assignment_expression "lVar7 = 8" identifier = number_literal) ;) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"__thunk_";" (assignment_expression "pbVar10 = (byte *)"__thunk_"" identifier = (cast_expression "(byte *)"__thunk_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__thunk_"" " string_content "))) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar13 < *pbVar10;" (assignment_expression "bVar14 = *pbVar13 < *pbVar10" identifier = (binary_expression "*pbVar13 < *pbVar10" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar16 = *pbVar13 == *pbVar10;" (assignment_expression "bVar16 = *pbVar13 == *pbVar10" identifier = (binary_expression "*pbVar13 == *pbVar10" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar14 = (!bVar14 && !bVar16) == bVar14;" (assignment_expression "bVar14 = (!bVar14 && !bVar16) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }" { (expression_statement "*param_2 = (long)(pbVar5 + 8);" (assignment_expression "*param_2 = (long)(pbVar5 + 8)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar5 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 8)" ( (binary_expression "pbVar5 + 8" identifier + number_literal) )))) ;) (expression_statement "iVar2 = FUN_00486160(param_2);" (assignment_expression "iVar2 = FUN_00486160(param_2)" identifier = (call_expression "FUN_00486160(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar2 == -1) {\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)*param_2 != '_') {\n      return 0;\n    }" if (parenthesized_expression "(*(char *)*param_2 != '_')" ( (binary_expression "*(char *)*param_2 != '_'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) != (char_literal "'_'" ' character ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*param_2 = (long)((char *)*param_2 + 1);" (assignment_expression "*param_2 = (long)((char *)*param_2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)((char *)*param_2 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((char *)*param_2 + 1)" ( (binary_expression "(char *)*param_2 + 1" (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) + number_literal) )))) ;) (expression_statement "pcVar12 = (char *)FUN_0048c0f0(param_1);" (assignment_expression "pcVar12 = (char *)FUN_0048c0f0(param_1)" identifier = (cast_expression "(char *)FUN_0048c0f0(param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0048c0f0(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (pcVar12 == (char *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(pcVar12 == (char *)0x0)" ( (binary_expression "pcVar12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);" (call_expression "sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2)" identifier (argument_list "(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2)" ( identifier , (string_literal ""virtual function thunk (delta:%d) for "" " string_content ") , (binary_expression "(ulong)(uint)-iVar2" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) - identifier) ))) ;) (if_statement "if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }" if (parenthesized_expression "(local_78[0] != '\0')" ( (binary_expression "local_78[0] != '\0'" (subscript_expression "local_78[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00486550(param_3,local_78);\n    }" { (expression_statement "FUN_00486550(param_3,local_78);" (call_expression "FUN_00486550(param_3,local_78)" identifier (argument_list "(param_3,local_78)" ( identifier , identifier ))) ;) })) (if_statement "if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }" if (parenthesized_expression "(*pcVar12 != '\0')" ( (binary_expression "*pcVar12 != '\0'" (pointer_expression "*pcVar12" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00486550(param_3,pcVar12);\n    }" { (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" identifier (argument_list "(param_3,pcVar12)" ( identifier , identifier ))) ;) })) (expression_statement "free(pcVar12);" (call_expression "free(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier ))) ;) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "sVar6 = strlen(pcVar12);" (assignment_expression "sVar6 = strlen(pcVar12)" identifier = (call_expression "strlen(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "*param_2 = (long)(pcVar12 + (int)sVar6);" (assignment_expression "*param_2 = (long)(pcVar12 + (int)sVar6)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pcVar12 + (int)sVar6)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pcVar12 + (int)sVar6)" ( (binary_expression "pcVar12 + (int)sVar6" identifier + (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "lVar7 = 3;" (assignment_expression "lVar7 = 3" identifier = number_literal) ;) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar10 = &DAT_00588187;" (assignment_expression "pbVar10 = &DAT_00588187" identifier = (pointer_expression "&DAT_00588187" & identifier)) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar13 < *pbVar10;" (assignment_expression "bVar15 = *pbVar13 < *pbVar10" identifier = (binary_expression "*pbVar13 < *pbVar10" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar14 = *pbVar13 == *pbVar10;" (assignment_expression "bVar14 = *pbVar13 == *pbVar10" identifier = (binary_expression "*pbVar13 == *pbVar10" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }" if (parenthesized_expression "((!bVar15 && !bVar14) != bVar15)" ( (binary_expression "(!bVar15 && !bVar14) != bVar15" (parenthesized_expression "(!bVar15 && !bVar14)" ( (binary_expression "!bVar15 && !bVar14" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) != identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar17 = pbVar5[3];" (assignment_expression "bVar17 = pbVar5[3]" identifier = (subscript_expression "pbVar5[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }" if (parenthesized_expression "((bVar17 != 0x69) && (bVar17 != 0x66))" ( (binary_expression "(bVar17 != 0x69) && (bVar17 != 0x66)" (parenthesized_expression "(bVar17 != 0x69)" ( (binary_expression "bVar17 != 0x69" identifier != number_literal) )) && (parenthesized_expression "(bVar17 != 0x66)" ( (binary_expression "bVar17 != 0x66" identifier != number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar12 = " type_info node";" (assignment_expression "pcVar12 = " type_info node"" identifier = (string_literal "" type_info node"" " string_content ")) ;) (if_statement "if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }" if (parenthesized_expression "(bVar17 != 0x69)" ( (binary_expression "bVar17 != 0x69" identifier != number_literal) )) (compound_statement "{\n    pcVar12 = " type_info function";\n  }" { (expression_statement "pcVar12 = " type_info function";" (assignment_expression "pcVar12 = " type_info function"" identifier = (string_literal "" type_info function"" " string_content ")) ;) })) (expression_statement "*param_2 = (long)(pbVar5 + 4);" (assignment_expression "*param_2 = (long)(pbVar5 + 4)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar5 + 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 4)" ( (binary_expression "pbVar5 + 4" identifier + number_literal) )))) ;) (expression_statement "bVar17 = pbVar5[4];" (assignment_expression "bVar17 = pbVar5[4]" identifier = (subscript_expression "pbVar5[4]" identifier [ number_literal ])) ;) (if_statement "if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }" if (parenthesized_expression "(bVar17 != 0x51)" ( (binary_expression "bVar17 != 0x51" identifier != number_literal) )) (compound_statement "{\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }" { (if_statement "if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }" if (parenthesized_expression "(bVar17 == 0x74)" ( (binary_expression "bVar17 == 0x74" identifier == number_literal) )) (compound_statement "{\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }" { (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier = (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier (argument_list "(param_1,param_2,param_3,0,1,1)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal )))) ;) (goto_statement "goto LAB_0048bb64;" goto statement_identifier ;) })) (if_statement "if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }" if (parenthesized_expression "(bVar17 != 0x4b)" ( (binary_expression "bVar17 != 0x4b" identifier != number_literal) )) (compound_statement "{\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }" { (expression_statement "iVar2 = FUN_00487a30(param_1,param_2,param_3);" (assignment_expression "iVar2 = FUN_00487a30(param_1,param_2,param_3)" identifier = (call_expression "FUN_00487a30(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (goto_statement "goto LAB_0048bb64;" goto statement_identifier ;) })) })) (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier = (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier (argument_list "(param_1,param_2,param_3,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;) (labeled_statement "LAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" statement_identifier : (if_statement "if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" if (parenthesized_expression "((iVar2 != 0) && (*(char *)*param_2 == '\0'))" ( (binary_expression "(iVar2 != 0) && (*(char *)*param_2 == '\0')" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)*param_2 == '\0')" ( (binary_expression "*(char *)*param_2 == '\0'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" { (if_statement "if (*pcVar12 == '\0') {\n      return iVar2;\n    }" if (parenthesized_expression "(*pcVar12 == '\0')" ( (binary_expression "*pcVar12 == '\0'" (pointer_expression "*pcVar12" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return iVar2;\n    }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" identifier (argument_list "(param_3,pcVar12)" ( identifier , identifier ))) ;) (return_statement "return iVar2;" return identifier ;) }))) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_0048bf80:\n  pbVar13 = (byte *)*param_2;" statement_identifier : (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;)) (goto_statement "goto LAB_0048bbfb;" goto statement_identifier ;) })))
(translation_unit "int gnu_special(work_stuff *work,char **mangled,string *declp)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint n;\n  int iVar3;\n  byte *pbVar4;\n  size_t sVar5;\n  long lVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  char *pcVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char buf [50];\n  \n  bVar15 = 0;\n  pbVar4 = (byte *)*mangled;\n  bVar12 = *pbVar4 < 0x5f;\n  bVar14 = *pbVar4 == 0x5f;\n  if (bVar14) {\n    bVar1 = pbVar4[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar12 = false;\n      bVar14 = pcVar10 == (char *)0x0;\n      if (!bVar14) {\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);\n      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar6 = 8;\n  pbVar11 = pbVar4;\n  pbVar8 = (byte *)"__thunk_";\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar12 = *pbVar11 < *pbVar8;\n    bVar14 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  } while (bVar14);\n  bVar13 = false;\n  bVar12 = (!bVar12 && !bVar14) == bVar12;\n  if (bVar12) {\n    *mangled = (char *)(pbVar4 + 8);\n    iVar2 = consume_count(mangled);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (**mangled != '_') {\n      return 0;\n    }\n    pcVar10 = *mangled + 1;\n    *mangled = pcVar10;\n    pcVar10 = internal_cplus_demangle(work,pcVar10);\n    if (pcVar10 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (buf[0] != '\0') {\n      string_append(declp,buf);\n    }\n    if (*pcVar10 != '\0') {\n      string_append(declp,pcVar10);\n    }\n    free(pcVar10);\n    pcVar10 = *mangled;\n    sVar5 = strlen(pcVar10);\n    *mangled = pcVar10 + (int)sVar5;\n    return 1;\n  }\n  lVar6 = 3;\n  pbVar11 = pbVar4;\n  pbVar8 = &DAT_00588187;\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar13 = *pbVar11 < *pbVar8;\n    bVar12 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  } while (bVar12);\n  if ((!bVar13 && !bVar12) != bVar13) {\n    return 0;\n  }\n  bVar15 = pbVar4[3];\n  if ((bVar15 != 0x69) && (bVar15 != 0x66)) {\n    return 0;\n  }\n  pcVar10 = " type_info node";\n  if (bVar15 != 0x69) {\n    pcVar10 = " type_info function";\n  }\n  *mangled = (char *)(pbVar4 + 4);\n  bVar15 = pbVar4[4];\n  if (bVar15 != 0x51) {\n    if (bVar15 == 0x74) {\n      iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar15 != 0x4b) {\n      iVar2 = do_type(work,mangled,declp);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (**mangled == '\0')) {\n    if (*pcVar10 == '\0') {\n      return iVar2;\n    }\n    string_append(declp,pcVar10);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar11 = (byte *)*mangled;\n  goto LAB_0048bbfb;\n}\n\n" (function_definition "int gnu_special(work_stuff *work,char **mangled,string *declp)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint n;\n  int iVar3;\n  byte *pbVar4;\n  size_t sVar5;\n  long lVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  char *pcVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char buf [50];\n  \n  bVar15 = 0;\n  pbVar4 = (byte *)*mangled;\n  bVar12 = *pbVar4 < 0x5f;\n  bVar14 = *pbVar4 == 0x5f;\n  if (bVar14) {\n    bVar1 = pbVar4[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar12 = false;\n      bVar14 = pcVar10 == (char *)0x0;\n      if (!bVar14) {\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);\n      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar6 = 8;\n  pbVar11 = pbVar4;\n  pbVar8 = (byte *)"__thunk_";\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar12 = *pbVar11 < *pbVar8;\n    bVar14 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  } while (bVar14);\n  bVar13 = false;\n  bVar12 = (!bVar12 && !bVar14) == bVar12;\n  if (bVar12) {\n    *mangled = (char *)(pbVar4 + 8);\n    iVar2 = consume_count(mangled);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (**mangled != '_') {\n      return 0;\n    }\n    pcVar10 = *mangled + 1;\n    *mangled = pcVar10;\n    pcVar10 = internal_cplus_demangle(work,pcVar10);\n    if (pcVar10 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (buf[0] != '\0') {\n      string_append(declp,buf);\n    }\n    if (*pcVar10 != '\0') {\n      string_append(declp,pcVar10);\n    }\n    free(pcVar10);\n    pcVar10 = *mangled;\n    sVar5 = strlen(pcVar10);\n    *mangled = pcVar10 + (int)sVar5;\n    return 1;\n  }\n  lVar6 = 3;\n  pbVar11 = pbVar4;\n  pbVar8 = &DAT_00588187;\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar13 = *pbVar11 < *pbVar8;\n    bVar12 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  } while (bVar12);\n  if ((!bVar13 && !bVar12) != bVar13) {\n    return 0;\n  }\n  bVar15 = pbVar4[3];\n  if ((bVar15 != 0x69) && (bVar15 != 0x66)) {\n    return 0;\n  }\n  pcVar10 = " type_info node";\n  if (bVar15 != 0x69) {\n    pcVar10 = " type_info function";\n  }\n  *mangled = (char *)(pbVar4 + 4);\n  bVar15 = pbVar4[4];\n  if (bVar15 != 0x51) {\n    if (bVar15 == 0x74) {\n      iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar15 != 0x4b) {\n      iVar2 = do_type(work,mangled,declp);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (**mangled == '\0')) {\n    if (*pcVar10 == '\0') {\n      return iVar2;\n    }\n    string_append(declp,pcVar10);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar11 = (byte *)*mangled;\n  goto LAB_0048bbfb;\n}" primitive_type (function_declarator "gnu_special(work_stuff *work,char **mangled,string *declp)" identifier (parameter_list "(work_stuff *work,char **mangled,string *declp)" ( (parameter_declaration "work_stuff *work" type_identifier (pointer_declarator "*work" * identifier)) , (parameter_declaration "char **mangled" primitive_type (pointer_declarator "**mangled" * (pointer_declarator "*mangled" * identifier))) , (parameter_declaration "string *declp" type_identifier (pointer_declarator "*declp" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint n;\n  int iVar3;\n  byte *pbVar4;\n  size_t sVar5;\n  long lVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  char *pcVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char buf [50];\n  \n  bVar15 = 0;\n  pbVar4 = (byte *)*mangled;\n  bVar12 = *pbVar4 < 0x5f;\n  bVar14 = *pbVar4 == 0x5f;\n  if (bVar14) {\n    bVar1 = pbVar4[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar12 = false;\n      bVar14 = pcVar10 == (char *)0x0;\n      if (!bVar14) {\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);\n      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar6 = 8;\n  pbVar11 = pbVar4;\n  pbVar8 = (byte *)"__thunk_";\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar12 = *pbVar11 < *pbVar8;\n    bVar14 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  } while (bVar14);\n  bVar13 = false;\n  bVar12 = (!bVar12 && !bVar14) == bVar12;\n  if (bVar12) {\n    *mangled = (char *)(pbVar4 + 8);\n    iVar2 = consume_count(mangled);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (**mangled != '_') {\n      return 0;\n    }\n    pcVar10 = *mangled + 1;\n    *mangled = pcVar10;\n    pcVar10 = internal_cplus_demangle(work,pcVar10);\n    if (pcVar10 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (buf[0] != '\0') {\n      string_append(declp,buf);\n    }\n    if (*pcVar10 != '\0') {\n      string_append(declp,pcVar10);\n    }\n    free(pcVar10);\n    pcVar10 = *mangled;\n    sVar5 = strlen(pcVar10);\n    *mangled = pcVar10 + (int)sVar5;\n    return 1;\n  }\n  lVar6 = 3;\n  pbVar11 = pbVar4;\n  pbVar8 = &DAT_00588187;\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar13 = *pbVar11 < *pbVar8;\n    bVar12 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  } while (bVar12);\n  if ((!bVar13 && !bVar12) != bVar13) {\n    return 0;\n  }\n  bVar15 = pbVar4[3];\n  if ((bVar15 != 0x69) && (bVar15 != 0x66)) {\n    return 0;\n  }\n  pcVar10 = " type_info node";\n  if (bVar15 != 0x69) {\n    pcVar10 = " type_info function";\n  }\n  *mangled = (char *)(pbVar4 + 4);\n  bVar15 = pbVar4[4];\n  if (bVar15 != 0x51) {\n    if (bVar15 == 0x74) {\n      iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar15 != 0x4b) {\n      iVar2 = do_type(work,mangled,declp);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (**mangled == '\0')) {\n    if (*pcVar10 == '\0') {\n      return iVar2;\n    }\n    string_append(declp,pcVar10);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar11 = (byte *)*mangled;\n  goto LAB_0048bbfb;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint n;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "char buf [50];" primitive_type (array_declarator "buf [50]" identifier [ number_literal ]) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "pbVar4 = (byte *)*mangled;" (assignment_expression "pbVar4 = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) (expression_statement "bVar12 = *pbVar4 < 0x5f;" (assignment_expression "bVar12 = *pbVar4 < 0x5f" identifier = (binary_expression "*pbVar4 < 0x5f" (pointer_expression "*pbVar4" * identifier) < number_literal)) ;) (expression_statement "bVar14 = *pbVar4 == 0x5f;" (assignment_expression "bVar14 = *pbVar4 == 0x5f" identifier = (binary_expression "*pbVar4 == 0x5f" (pointer_expression "*pbVar4" * identifier) == number_literal)) ;) (if_statement "if (bVar14) {\n    bVar1 = pbVar4[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar12 = false;\n      bVar14 = pcVar10 == (char *)0x0;\n      if (!bVar14) {\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);\n      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    bVar1 = pbVar4[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar12 = false;\n      bVar14 = pcVar10 == (char *)0x0;\n      if (!bVar14) {\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);\n      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar1 = pbVar4[1];" (assignment_expression "bVar1 = pbVar4[1]" identifier = (subscript_expression "pbVar4[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar12 = false;\n      bVar14 = pcVar10 == (char *)0x0;\n      if (!bVar14) {\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);\n      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0048bcb8:\n      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar12 = false;\n      bVar14 = pcVar10 == (char *)0x0;\n      if (!bVar14) {\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }\n    }" { (labeled_statement "LAB_0048bcb8:\n      pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);" statement_identifier : (expression_statement "pcVar10 = strchr("0123456789Qt",(int)(char)bVar1);" (assignment_expression "pcVar10 = strchr("0123456789Qt",(int)(char)bVar1)" identifier = (call_expression "strchr("0123456789Qt",(int)(char)bVar1)" identifier (argument_list "("0123456789Qt",(int)(char)bVar1)" ( (string_literal ""0123456789Qt"" " string_content ") , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )))) ;)) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar14 = pcVar10 == (char *)0x0;" (assignment_expression "bVar14 = pcVar10 == (char *)0x0" identifier = (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar14) {\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (compound_statement "{\n        pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n        bVar12 = false;\n        bVar14 = pbVar11 == (byte *)0x0;\n        if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }\n      }" { (expression_statement "pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);" (assignment_expression "pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar4,cplus_markers)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar4,cplus_markers)" identifier (argument_list "((char *)pbVar4,cplus_markers)" ( (cast_expression "(char *)pbVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar14 = pbVar11 == (byte *)0x0;" (assignment_expression "bVar14 = pbVar11 == (byte *)0x0" identifier = (binary_expression "pbVar11 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar14) {\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (compound_statement "{\n          *mangled = (char *)(pbVar4 + 1);\n          bVar1 = pbVar4[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar4 = (byte *)*mangled;\nLAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }\n          iVar3 = work->options;\n          *mangled = (char *)(pbVar11 + 1);\n          pcVar10 = ".";\n          if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }\n          string_append(declp,pcVar10);\n          pcVar10 = *mangled;\n          sVar5 = strlen(pcVar10);\n          iVar3 = (int)sVar5;\n          if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }\n          *mangled = pcVar10 + iVar3;\n          return iVar2;\n        }" { (expression_statement "*mangled = (char *)(pbVar4 + 1);" (assignment_expression "*mangled = (char *)(pbVar4 + 1)" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)(pbVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) (expression_statement "bVar1 = pbVar4[1];" (assignment_expression "bVar1 = pbVar4[1]" identifier = (subscript_expression "pbVar4[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }" if (parenthesized_expression "(bVar1 == 0x51)" ( (binary_expression "bVar1 == 0x51" identifier == number_literal) )) (compound_statement "{\nLAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);\n          }" { (labeled_statement "LAB_0048bf00:\n            iVar2 = demangle_qualified(work,mangled,declp,0,1);" statement_identifier : (expression_statement "iVar2 = demangle_qualified(work,mangled,declp,0,1);" (assignment_expression "iVar2 = demangle_qualified(work,mangled,declp,0,1)" identifier = (call_expression "demangle_qualified(work,mangled,declp,0,1)" identifier (argument_list "(work,mangled,declp,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;)) }) (else_clause "else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }" else (compound_statement "{\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }\n            iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n          }" { (if_statement "if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }" if (parenthesized_expression "(bVar1 != 0x74)" ( (binary_expression "bVar1 != 0x74" identifier != number_literal) )) (compound_statement "{\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              n = consume_count(mangled);\n              if ((int)n < 0) {\n                return 0;\n              }\n              pbVar4 = (byte *)*mangled;\n              sVar5 = strlen((char *)pbVar4);\n              lVar6 = (long)(int)n;\n              if ((long)sVar5 < lVar6) {\n                return 0;\n              }\n              bVar12 = n < 10;\n              bVar14 = n == 10;\n              if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }\n              pbVar4 = pbVar4 + lVar6;\n              iVar2 = 1;\n              *mangled = (char *)pbVar4;\n              goto LAB_0048beab;\n            }" { (if_statement "if (bVar1 == 0x4b) goto LAB_0048bf00;" if (parenthesized_expression "(bVar1 == 0x4b)" ( (binary_expression "bVar1 == 0x4b" identifier == number_literal) )) (goto_statement "goto LAB_0048bf00;" goto statement_identifier ;)) (expression_statement "n = consume_count(mangled);" (assignment_expression "n = consume_count(mangled)" identifier = (call_expression "consume_count(mangled)" identifier (argument_list "(mangled)" ( identifier )))) ;) (if_statement "if ((int)n < 0) {\n                return 0;\n              }" if (parenthesized_expression "((int)n < 0)" ( (binary_expression "(int)n < 0" (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar4 = (byte *)*mangled;" (assignment_expression "pbVar4 = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) (expression_statement "sVar5 = strlen((char *)pbVar4);" (assignment_expression "sVar5 = strlen((char *)pbVar4)" identifier = (call_expression "strlen((char *)pbVar4)" identifier (argument_list "((char *)pbVar4)" ( (cast_expression "(char *)pbVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "lVar6 = (long)(int)n;" (assignment_expression "lVar6 = (long)(int)n" identifier = (cast_expression "(long)(int)n" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((long)sVar5 < lVar6) {\n                return 0;\n              }" if (parenthesized_expression "((long)sVar5 < lVar6)" ( (binary_expression "(long)sVar5 < lVar6" (cast_expression "(long)sVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < identifier) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar12 = n < 10;" (assignment_expression "bVar12 = n < 10" identifier = (binary_expression "n < 10" identifier < number_literal)) ;) (expression_statement "bVar14 = n == 10;" (assignment_expression "bVar14 = n == 10" identifier = (binary_expression "n == 10" identifier == number_literal)) ;) (if_statement "if ((int)n < 0xb) {\n                if (n != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }" if (parenthesized_expression "((int)n < 0xb)" ( (binary_expression "(int)n < 0xb" (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (n != 0) goto LAB_0048bd6c;\n              }" { (if_statement "if (n != 0) goto LAB_0048bd6c;" if (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) (goto_statement "goto LAB_0048bd6c;" goto statement_identifier ;)) }) (else_clause "else {\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }" else (compound_statement "{\n                lVar7 = 8;\n                pbVar8 = pbVar4;\n                pbVar9 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);\n                if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }\nLAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);\n                pbVar4 = (byte *)*mangled;\n              }" { (expression_statement "lVar7 = 8;" (assignment_expression "lVar7 = 8" identifier = number_literal) ;) (expression_statement "pbVar8 = pbVar4;" (assignment_expression "pbVar8 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)"_GLOBAL_";" (assignment_expression "pbVar9 = (byte *)"_GLOBAL_"" identifier = (cast_expression "(byte *)"_GLOBAL_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_"" " string_content "))) ;) (do_statement "do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                } while (bVar14);" do (compound_statement "{\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar12 = *pbVar8 < *pbVar9;\n                  bVar14 = *pbVar8 == *pbVar9;\n                  pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n                  pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;\n                }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar8 < *pbVar9;" (assignment_expression "bVar12 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar14 = *pbVar8 == *pbVar9;" (assignment_expression "bVar14 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (if_statement "if (((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)) {\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }" if (parenthesized_expression "(((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0))" ( (binary_expression "((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])) &&\n                   (pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)" (parenthesized_expression "((((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10]))" ( (binary_expression "(((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)) &&\n                    (pbVar4[8] == pbVar4[10])" (parenthesized_expression "(((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e))" ( (binary_expression "((!bVar12 && !bVar14) == bVar12) && (pbVar4[9] == 0x4e)" (parenthesized_expression "((!bVar12 && !bVar14) == bVar12)" ( (binary_expression "(!bVar12 && !bVar14) == bVar12" (parenthesized_expression "(!bVar12 && !bVar14)" ( (binary_expression "!bVar12 && !bVar14" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier) )) && (parenthesized_expression "(pbVar4[9] == 0x4e)" ( (binary_expression "pbVar4[9] == 0x4e" (subscript_expression "pbVar4[9]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(pbVar4[8] == pbVar4[10])" ( (binary_expression "pbVar4[8] == pbVar4[10]" (subscript_expression "pbVar4[8]" identifier [ number_literal ]) == (subscript_expression "pbVar4[10]" identifier [ number_literal ])) ))) )) && (parenthesized_expression "(pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0)" ( (comma_expression "pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8]), pcVar10 != (char *)0x0" (assignment_expression "pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[8])" identifier = (call_expression "strchr(cplus_markers,(int)(char)pbVar4[8])" identifier (argument_list "(cplus_markers,(int)(char)pbVar4[8])" ( identifier , (cast_expression "(int)(char)pbVar4[8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar4[8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar4[8]" identifier [ number_literal ]))) )))) , (binary_expression "pcVar10 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                  iVar2 = 1;\n                  string_append(declp,"{anonymous}");\n                  pbVar4 = (byte *)(*mangled + lVar6);\n                  *mangled = (char *)pbVar4;\n                  pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);\n                  goto LAB_0048beab;\n                }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "string_append(declp,"{anonymous}");" (call_expression "string_append(declp,"{anonymous}")" identifier (argument_list "(declp,"{anonymous}")" ( identifier , (string_literal ""{anonymous}"" " string_content ") ))) ;) (expression_statement "pbVar4 = (byte *)(*mangled + lVar6);" (assignment_expression "pbVar4 = (byte *)(*mangled + lVar6)" identifier = (cast_expression "(byte *)(*mangled + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*mangled + lVar6)" ( (binary_expression "*mangled + lVar6" (pointer_expression "*mangled" * identifier) + identifier) )))) ;) (expression_statement "*mangled = (char *)pbVar4;" (assignment_expression "*mangled = (char *)pbVar4" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)pbVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers);" (assignment_expression "pbVar11 = (byte *)strpbrk((char *)pbVar4,cplus_markers)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar4,cplus_markers)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar4,cplus_markers)" identifier (argument_list "((char *)pbVar4,cplus_markers)" ( (cast_expression "(char *)pbVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (goto_statement "goto LAB_0048beab;" goto statement_identifier ;) })) (labeled_statement "LAB_0048bd6c:\n                string_appendn(declp,(char *)pbVar4,n);" statement_identifier : (expression_statement "string_appendn(declp,(char *)pbVar4,n);" (call_expression "string_appendn(declp,(char *)pbVar4,n)" identifier (argument_list "(declp,(char *)pbVar4,n)" ( identifier , (cast_expression "(char *)pbVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (expression_statement "pbVar4 = (byte *)*mangled;" (assignment_expression "pbVar4 = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) }))) (expression_statement "pbVar4 = pbVar4 + lVar6;" (assignment_expression "pbVar4 = pbVar4 + lVar6" identifier = (binary_expression "pbVar4 + lVar6" identifier + identifier)) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "*mangled = (char *)pbVar4;" (assignment_expression "*mangled = (char *)pbVar4" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)pbVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_0048beab;" goto statement_identifier ;) })) (expression_statement "iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);" (assignment_expression "iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1)" identifier = (call_expression "demangle_template(work,mangled,declp,(string *)0x0,1,1)" identifier (argument_list "(work,mangled,declp,(string *)0x0,1,1)" ( identifier , identifier , identifier , (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , number_literal )))) ;) }))) (if_statement "if (iVar2 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar4 = (byte *)*mangled;" (assignment_expression "pbVar4 = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) (labeled_statement "LAB_0048beab:\n          if (pbVar11 != pbVar4) {\n            return 0;\n          }" statement_identifier : (if_statement "if (pbVar11 != pbVar4) {\n            return 0;\n          }" if (parenthesized_expression "(pbVar11 != pbVar4)" ( (binary_expression "pbVar11 != pbVar4" identifier != identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) }))) (expression_statement "iVar3 = work->options;" (assignment_expression "iVar3 = work->options" identifier = (field_expression "work->options" identifier -> field_identifier)) ;) (expression_statement "*mangled = (char *)(pbVar11 + 1);" (assignment_expression "*mangled = (char *)(pbVar11 + 1)" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)(pbVar11 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar11 + 1)" ( (binary_expression "pbVar11 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar10 = ".";" (assignment_expression "pcVar10 = "."" identifier = (string_literal ""."" " string_content ")) ;) (if_statement "if ((iVar3 & 4) == 0) {\n            pcVar10 = "::";\n          }" if (parenthesized_expression "((iVar3 & 4) == 0)" ( (binary_expression "(iVar3 & 4) == 0" (parenthesized_expression "(iVar3 & 4)" ( (binary_expression "iVar3 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            pcVar10 = "::";\n          }" { (expression_statement "pcVar10 = "::";" (assignment_expression "pcVar10 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) })) (expression_statement "string_append(declp,pcVar10);" (call_expression "string_append(declp,pcVar10)" identifier (argument_list "(declp,pcVar10)" ( identifier , identifier ))) ;) (expression_statement "pcVar10 = *mangled;" (assignment_expression "pcVar10 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "sVar5 = strlen(pcVar10);" (assignment_expression "sVar5 = strlen(pcVar10)" identifier = (call_expression "strlen(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier )))) ;) (expression_statement "iVar3 = (int)sVar5;" (assignment_expression "iVar3 = (int)sVar5" identifier = (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar3 != 0) {\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            string_appendn(declp,pcVar10,iVar3);\n            pcVar10 = *mangled;\n          }" { (expression_statement "string_appendn(declp,pcVar10,iVar3);" (call_expression "string_appendn(declp,pcVar10,iVar3)" identifier (argument_list "(declp,pcVar10,iVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "pcVar10 = *mangled;" (assignment_expression "pcVar10 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) })) (expression_statement "*mangled = pcVar10 + iVar3;" (assignment_expression "*mangled = pcVar10 + iVar3" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar10 + iVar3" identifier + identifier)) ;) (return_statement "return iVar2;" return identifier ;) })) })) }) (else_clause "else {\n      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);\n      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" else (compound_statement "{\n      pcVar10 = strchr(cplus_markers,(int)(char)bVar1);\n      if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" { (expression_statement "pcVar10 = strchr(cplus_markers,(int)(char)bVar1);" (assignment_expression "pcVar10 = strchr(cplus_markers,(int)(char)bVar1)" identifier = (call_expression "strchr(cplus_markers,(int)(char)bVar1)" identifier (argument_list "(cplus_markers,(int)(char)bVar1)" ( identifier , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )))) ;) (if_statement "if ((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)) {\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }" if (parenthesized_expression "((pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f))" ( (binary_expression "(pcVar10 != (char *)0x0) && (pbVar4[2] == 0x5f)" (parenthesized_expression "(pcVar10 != (char *)0x0)" ( (binary_expression "pcVar10 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pbVar4[2] == 0x5f)" ( (binary_expression "pbVar4[2] == 0x5f" (subscript_expression "pbVar4[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n        *mangled = (char *)(pbVar4 + 3);\n        work->destructor = work->destructor + 1;\n        return 1;\n      }" { (expression_statement "*mangled = (char *)(pbVar4 + 3);" (assignment_expression "*mangled = (char *)(pbVar4 + 3)" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)(pbVar4 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 3)" ( (binary_expression "pbVar4 + 3" identifier + number_literal) )))) ;) (expression_statement "work->destructor = work->destructor + 1;" (assignment_expression "work->destructor = work->destructor + 1" (field_expression "work->destructor" identifier -> field_identifier) = (binary_expression "work->destructor + 1" (field_expression "work->destructor" identifier -> field_identifier) + number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (if_statement "if (bVar1 == 0x5f) {\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 == 0x5f)" ( (binary_expression "bVar1 == 0x5f" identifier == number_literal) )) (compound_statement "{\n        bVar12 = pbVar4[2] < 0x76;\n        bVar14 = pbVar4[2] == 0x76;\n        if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }\n      }" { (expression_statement "bVar12 = pbVar4[2] < 0x76;" (assignment_expression "bVar12 = pbVar4[2] < 0x76" identifier = (binary_expression "pbVar4[2] < 0x76" (subscript_expression "pbVar4[2]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar14 = pbVar4[2] == 0x76;" (assignment_expression "bVar14 = pbVar4[2] == 0x76" identifier = (binary_expression "pbVar4[2] == 0x76" (subscript_expression "pbVar4[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar14) {\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n          bVar12 = pbVar4[3] < 0x74;\n          bVar14 = pbVar4[3] == 0x74;\n          if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }\n        }" { (expression_statement "bVar12 = pbVar4[3] < 0x74;" (assignment_expression "bVar12 = pbVar4[3] < 0x74" identifier = (binary_expression "pbVar4[3] < 0x74" (subscript_expression "pbVar4[3]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar14 = pbVar4[3] == 0x74;" (assignment_expression "bVar14 = pbVar4[3] == 0x74" identifier = (binary_expression "pbVar4[3] == 0x74" (subscript_expression "pbVar4[3]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar14) {\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n            bVar12 = pbVar4[4] < 0x5f;\n            bVar14 = pbVar4[4] == 0x5f;\n            if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }\n          }" { (expression_statement "bVar12 = pbVar4[4] < 0x5f;" (assignment_expression "bVar12 = pbVar4[4] < 0x5f" identifier = (binary_expression "pbVar4[4] < 0x5f" (subscript_expression "pbVar4[4]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar14 = pbVar4[4] == 0x5f;" (assignment_expression "bVar14 = pbVar4[4] == 0x5f" identifier = (binary_expression "pbVar4[4] == 0x5f" (subscript_expression "pbVar4[4]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar14) {\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n              pbVar11 = pbVar4 + 5;\nLAB_0048bbeb:\n              *mangled = (char *)pbVar11;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar15 = *pbVar11;\n              do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );\n            }" { (expression_statement "pbVar11 = pbVar4 + 5;" (assignment_expression "pbVar11 = pbVar4 + 5" identifier = (binary_expression "pbVar4 + 5" identifier + number_literal)) ;) (labeled_statement "LAB_0048bbeb:\n              *mangled = (char *)pbVar11;" statement_identifier : (expression_statement "*mangled = (char *)pbVar11;" (assignment_expression "*mangled = (char *)pbVar11" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0048bbfb:\n              bVar15 = *pbVar11;" statement_identifier : (expression_statement "bVar15 = *pbVar11;" (assignment_expression "bVar15 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;)) (do_statement "do {\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              } while( true );" do (compound_statement "{\n                if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }\n                if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }\n                if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar11 != pbVar4) {\n                  return 0;\n                }\n                pcVar10 = "::";\n                if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }\n                string_append(declp,pcVar10);\n                pbVar11 = (byte *)(*mangled + 1);\n                *mangled = (char *)pbVar11;\n                bVar15 = *pbVar11;\n              }" { (if_statement "if (bVar15 == 0) {\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }" if (parenthesized_expression "(bVar15 == 0)" ( (binary_expression "bVar15 == 0" identifier == number_literal) )) (compound_statement "{\n                  string_append(declp," virtual table");\n                  return iVar2;\n                }" { (expression_statement "string_append(declp," virtual table");" (call_expression "string_append(declp," virtual table")" identifier (argument_list "(declp," virtual table")" ( identifier , (string_literal "" virtual table"" " string_content ") ))) ;) (return_statement "return iVar2;" return identifier ;) })) (if_statement "if (bVar15 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }" if (parenthesized_expression "(bVar15 == 0x51)" ( (binary_expression "bVar15 == 0x51" identifier == number_literal) )) (compound_statement "{\nLAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);\nLAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;\n                  pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }" { (labeled_statement "LAB_0048bf60:\n                  iVar2 = demangle_qualified(work,mangled,declp,0,1);" statement_identifier : (expression_statement "iVar2 = demangle_qualified(work,mangled,declp,0,1);" (assignment_expression "iVar2 = demangle_qualified(work,mangled,declp,0,1)" identifier = (call_expression "demangle_qualified(work,mangled,declp,0,1)" identifier (argument_list "(work,mangled,declp,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;)) (labeled_statement "LAB_0048bf3f:\n                  pbVar11 = (byte *)*mangled;" statement_identifier : (expression_statement "pbVar11 = (byte *)*mangled;" (assignment_expression "pbVar11 = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;)) (expression_statement "pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);" (assignment_expression "pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar11,cplus_markers)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar11,cplus_markers)" identifier (argument_list "((char *)pbVar11,cplus_markers)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (if_statement "if (iVar2 == 0) {\n                    return 0;\n                  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    return 0;\n                  }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }" else (compound_statement "{\n                  if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar15 == 0x4b) goto LAB_0048bf60;\n                  if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                }" { (if_statement "if (bVar15 == 0x74) {\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }" if (parenthesized_expression "(bVar15 == 0x74)" ( (binary_expression "bVar15 == 0x74" identifier == number_literal) )) (compound_statement "{\n                    iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n                    goto LAB_0048bf3f;\n                  }" { (expression_statement "iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);" (assignment_expression "iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1)" identifier = (call_expression "demangle_template(work,mangled,declp,(string *)0x0,1,1)" identifier (argument_list "(work,mangled,declp,(string *)0x0,1,1)" ( identifier , identifier , identifier , (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , number_literal )))) ;) (goto_statement "goto LAB_0048bf3f;" goto statement_identifier ;) })) (if_statement "if (bVar15 == 0x4b) goto LAB_0048bf60;" if (parenthesized_expression "(bVar15 == 0x4b)" ( (binary_expression "bVar15 == 0x4b" identifier == number_literal) )) (goto_statement "goto LAB_0048bf60;" goto statement_identifier ;)) (if_statement "if ((_sch_istable[bVar15] & 4) == 0) {\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }\n                  else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }" if (parenthesized_expression "((_sch_istable[bVar15] & 4) == 0)" ( (binary_expression "(_sch_istable[bVar15] & 4) == 0" (parenthesized_expression "(_sch_istable[bVar15] & 4)" ( (binary_expression "_sch_istable[bVar15] & 4" (subscript_expression "_sch_istable[bVar15]" identifier [ identifier ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                    sVar5 = strcspn((char *)pbVar11,cplus_markers);\n                    iVar3 = (int)sVar5;\nLAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }\n                    pbVar11 = pbVar11 + iVar3;\n                    *mangled = (char *)pbVar11;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }" { (expression_statement "sVar5 = strcspn((char *)pbVar11,cplus_markers);" (assignment_expression "sVar5 = strcspn((char *)pbVar11,cplus_markers)" identifier = (call_expression "strcspn((char *)pbVar11,cplus_markers)" identifier (argument_list "((char *)pbVar11,cplus_markers)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "iVar3 = (int)sVar5;" (assignment_expression "iVar3 = (int)sVar5" identifier = (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_0048bc3f:\n                    if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }" statement_identifier : (if_statement "if (iVar3 != 0) {\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                      string_appendn(declp,(char *)pbVar11,iVar3);\n                      pbVar11 = (byte *)*mangled;\n                    }" { (expression_statement "string_appendn(declp,(char *)pbVar11,iVar3);" (call_expression "string_appendn(declp,(char *)pbVar11,iVar3)" identifier (argument_list "(declp,(char *)pbVar11,iVar3)" ( identifier , (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "pbVar11 = (byte *)*mangled;" (assignment_expression "pbVar11 = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) }))) (expression_statement "pbVar11 = pbVar11 + iVar3;" (assignment_expression "pbVar11 = pbVar11 + iVar3" identifier = (binary_expression "pbVar11 + iVar3" identifier + identifier)) ;) (expression_statement "*mangled = (char *)pbVar11;" (assignment_expression "*mangled = (char *)pbVar11" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);" (assignment_expression "pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar11,cplus_markers)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar11,cplus_markers)" identifier (argument_list "((char *)pbVar11,cplus_markers)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) }) (else_clause "else {\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }" else (compound_statement "{\n                    iVar3 = consume_count(mangled);\n                    pbVar11 = (byte *)*mangled;\n                    sVar5 = strlen((char *)pbVar11);\n                    if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);\n                  }" { (expression_statement "iVar3 = consume_count(mangled);" (assignment_expression "iVar3 = consume_count(mangled)" identifier = (call_expression "consume_count(mangled)" identifier (argument_list "(mangled)" ( identifier )))) ;) (expression_statement "pbVar11 = (byte *)*mangled;" (assignment_expression "pbVar11 = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) (expression_statement "sVar5 = strlen((char *)pbVar11);" (assignment_expression "sVar5 = strlen((char *)pbVar11)" identifier = (call_expression "strlen((char *)pbVar11)" identifier (argument_list "((char *)pbVar11)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar3 <= (int)sVar5) {\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }" if (parenthesized_expression "(iVar3 <= (int)sVar5)" ( (binary_expression "iVar3 <= (int)sVar5" identifier <= (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      if (iVar3 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }" { (if_statement "if (iVar3 == -1) {\n                        return 0;\n                      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n                        return 0;\n                      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0048bc3f;" goto statement_identifier ;) })) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers);" (assignment_expression "pbVar4 = (byte *)strpbrk((char *)pbVar11,cplus_markers)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar11,cplus_markers)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar11,cplus_markers)" identifier (argument_list "((char *)pbVar11,cplus_markers)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) }))) }))) (if_statement "if (pbVar4 == (byte *)0x0) goto LAB_0048bf80;" if (parenthesized_expression "(pbVar4 == (byte *)0x0)" ( (binary_expression "pbVar4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0048bf80;" goto statement_identifier ;)) (if_statement "if (pbVar11 != pbVar4) {\n                  return 0;\n                }" if (parenthesized_expression "(pbVar11 != pbVar4)" ( (binary_expression "pbVar11 != pbVar4" identifier != identifier) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar10 = "::";" (assignment_expression "pcVar10 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) (if_statement "if ((work->options & 4) != 0) {\n                  pcVar10 = ".";\n                }" if (parenthesized_expression "((work->options & 4) != 0)" ( (binary_expression "(work->options & 4) != 0" (parenthesized_expression "(work->options & 4)" ( (binary_expression "work->options & 4" (field_expression "work->options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                  pcVar10 = ".";\n                }" { (expression_statement "pcVar10 = ".";" (assignment_expression "pcVar10 = "."" identifier = (string_literal ""."" " string_content ")) ;) })) (expression_statement "string_append(declp,pcVar10);" (call_expression "string_append(declp,pcVar10)" identifier (argument_list "(declp,pcVar10)" ( identifier , identifier ))) ;) (expression_statement "pbVar11 = (byte *)(*mangled + 1);" (assignment_expression "pbVar11 = (byte *)(*mangled + 1)" identifier = (cast_expression "(byte *)(*mangled + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*mangled + 1)" ( (binary_expression "*mangled + 1" (pointer_expression "*mangled" * identifier) + number_literal) )))) ;) (expression_statement "*mangled = (char *)pbVar11;" (assignment_expression "*mangled = (char *)pbVar11" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar15 = *pbVar11;" (assignment_expression "bVar15 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) })) }) (else_clause "else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }" else (compound_statement "{\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar12 = pbVar4[2] < 0x74;\n        bVar14 = pbVar4[2] == 0x74;\n        if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }\n      }" { (if_statement "if (bVar1 != 0x76) goto LAB_0048bcb8;" if (parenthesized_expression "(bVar1 != 0x76)" ( (binary_expression "bVar1 != 0x76" identifier != number_literal) )) (goto_statement "goto LAB_0048bcb8;" goto statement_identifier ;)) (expression_statement "bVar12 = pbVar4[2] < 0x74;" (assignment_expression "bVar12 = pbVar4[2] < 0x74" identifier = (binary_expression "pbVar4[2] < 0x74" (subscript_expression "pbVar4[2]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar14 = pbVar4[2] == 0x74;" (assignment_expression "bVar14 = pbVar4[2] == 0x74" identifier = (binary_expression "pbVar4[2] == 0x74" (subscript_expression "pbVar4[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar14) {\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n          bVar12 = false;\n          bVar14 = pbVar4[3] == 0;\n          if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }\n        }" { (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar14 = pbVar4[3] == 0;" (assignment_expression "bVar14 = pbVar4[3] == 0" identifier = (binary_expression "pbVar4[3] == 0" (subscript_expression "pbVar4[3]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (!bVar14) {\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (compound_statement "{\n            pbVar11 = pbVar4 + 4;\n            pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);\n            bVar12 = false;\n            bVar14 = pcVar10 == (char *)0x0;\n            if (!bVar14) goto LAB_0048bbeb;\n          }" { (expression_statement "pbVar11 = pbVar4 + 4;" (assignment_expression "pbVar11 = pbVar4 + 4" identifier = (binary_expression "pbVar4 + 4" identifier + number_literal)) ;) (expression_statement "pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3]);" (assignment_expression "pcVar10 = strchr(cplus_markers,(int)(char)pbVar4[3])" identifier = (call_expression "strchr(cplus_markers,(int)(char)pbVar4[3])" identifier (argument_list "(cplus_markers,(int)(char)pbVar4[3])" ( identifier , (cast_expression "(int)(char)pbVar4[3]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar4[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar4[3]" identifier [ number_literal ]))) )))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar14 = pcVar10 == (char *)0x0;" (assignment_expression "bVar14 = pcVar10 == (char *)0x0" identifier = (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar14) goto LAB_0048bbeb;" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (goto_statement "goto LAB_0048bbeb;" goto statement_identifier ;)) })) })) }))) }))) })) (expression_statement "lVar6 = 8;" (assignment_expression "lVar6 = 8" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar8 = (byte *)"__thunk_";" (assignment_expression "pbVar8 = (byte *)"__thunk_"" identifier = (cast_expression "(byte *)"__thunk_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__thunk_"" " string_content "))) ;) (do_statement "do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar12 = *pbVar11 < *pbVar8;\n    bVar14 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  } while (bVar14);" do (compound_statement "{\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar12 = *pbVar11 < *pbVar8;\n    bVar14 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar11 < *pbVar8;" (assignment_expression "bVar12 = *pbVar11 < *pbVar8" identifier = (binary_expression "*pbVar11 < *pbVar8" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar14 = *pbVar11 == *pbVar8;" (assignment_expression "bVar14 = *pbVar11 == *pbVar8" identifier = (binary_expression "*pbVar11 == *pbVar8" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar12 = (!bVar12 && !bVar14) == bVar12;" (assignment_expression "bVar12 = (!bVar12 && !bVar14) == bVar12" identifier = (binary_expression "(!bVar12 && !bVar14) == bVar12" (parenthesized_expression "(!bVar12 && !bVar14)" ( (binary_expression "!bVar12 && !bVar14" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar12) {\n    *mangled = (char *)(pbVar4 + 8);\n    iVar2 = consume_count(mangled);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (**mangled != '_') {\n      return 0;\n    }\n    pcVar10 = *mangled + 1;\n    *mangled = pcVar10;\n    pcVar10 = internal_cplus_demangle(work,pcVar10);\n    if (pcVar10 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (buf[0] != '\0') {\n      string_append(declp,buf);\n    }\n    if (*pcVar10 != '\0') {\n      string_append(declp,pcVar10);\n    }\n    free(pcVar10);\n    pcVar10 = *mangled;\n    sVar5 = strlen(pcVar10);\n    *mangled = pcVar10 + (int)sVar5;\n    return 1;\n  }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n    *mangled = (char *)(pbVar4 + 8);\n    iVar2 = consume_count(mangled);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (**mangled != '_') {\n      return 0;\n    }\n    pcVar10 = *mangled + 1;\n    *mangled = pcVar10;\n    pcVar10 = internal_cplus_demangle(work,pcVar10);\n    if (pcVar10 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (buf[0] != '\0') {\n      string_append(declp,buf);\n    }\n    if (*pcVar10 != '\0') {\n      string_append(declp,pcVar10);\n    }\n    free(pcVar10);\n    pcVar10 = *mangled;\n    sVar5 = strlen(pcVar10);\n    *mangled = pcVar10 + (int)sVar5;\n    return 1;\n  }" { (expression_statement "*mangled = (char *)(pbVar4 + 8);" (assignment_expression "*mangled = (char *)(pbVar4 + 8)" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)(pbVar4 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 8)" ( (binary_expression "pbVar4 + 8" identifier + number_literal) )))) ;) (expression_statement "iVar2 = consume_count(mangled);" (assignment_expression "iVar2 = consume_count(mangled)" identifier = (call_expression "consume_count(mangled)" identifier (argument_list "(mangled)" ( identifier )))) ;) (if_statement "if (iVar2 == -1) {\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (**mangled != '_') {\n      return 0;\n    }" if (parenthesized_expression "(**mangled != '_')" ( (binary_expression "**mangled != '_'" (pointer_expression "**mangled" * (pointer_expression "*mangled" * identifier)) != (char_literal "'_'" ' character ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar10 = *mangled + 1;" (assignment_expression "pcVar10 = *mangled + 1" identifier = (binary_expression "*mangled + 1" (pointer_expression "*mangled" * identifier) + number_literal)) ;) (expression_statement "*mangled = pcVar10;" (assignment_expression "*mangled = pcVar10" (pointer_expression "*mangled" * identifier) = identifier) ;) (expression_statement "pcVar10 = internal_cplus_demangle(work,pcVar10);" (assignment_expression "pcVar10 = internal_cplus_demangle(work,pcVar10)" identifier = (call_expression "internal_cplus_demangle(work,pcVar10)" identifier (argument_list "(work,pcVar10)" ( identifier , identifier )))) ;) (if_statement "if (pcVar10 == (char *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "sprintf(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);" (call_expression "sprintf(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2)" identifier (argument_list "(buf,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2)" ( identifier , (string_literal ""virtual function thunk (delta:%d) for "" " string_content ") , (binary_expression "(ulong)(uint)-iVar2" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) - identifier) ))) ;) (if_statement "if (buf[0] != '\0') {\n      string_append(declp,buf);\n    }" if (parenthesized_expression "(buf[0] != '\0')" ( (binary_expression "buf[0] != '\0'" (subscript_expression "buf[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      string_append(declp,buf);\n    }" { (expression_statement "string_append(declp,buf);" (call_expression "string_append(declp,buf)" identifier (argument_list "(declp,buf)" ( identifier , identifier ))) ;) })) (if_statement "if (*pcVar10 != '\0') {\n      string_append(declp,pcVar10);\n    }" if (parenthesized_expression "(*pcVar10 != '\0')" ( (binary_expression "*pcVar10 != '\0'" (pointer_expression "*pcVar10" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      string_append(declp,pcVar10);\n    }" { (expression_statement "string_append(declp,pcVar10);" (call_expression "string_append(declp,pcVar10)" identifier (argument_list "(declp,pcVar10)" ( identifier , identifier ))) ;) })) (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "pcVar10 = *mangled;" (assignment_expression "pcVar10 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "sVar5 = strlen(pcVar10);" (assignment_expression "sVar5 = strlen(pcVar10)" identifier = (call_expression "strlen(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier )))) ;) (expression_statement "*mangled = pcVar10 + (int)sVar5;" (assignment_expression "*mangled = pcVar10 + (int)sVar5" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar10 + (int)sVar5" identifier + (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "lVar6 = 3;" (assignment_expression "lVar6 = 3" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar8 = &DAT_00588187;" (assignment_expression "pbVar8 = &DAT_00588187" identifier = (pointer_expression "&DAT_00588187" & identifier)) ;) (do_statement "do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar13 = *pbVar11 < *pbVar8;\n    bVar12 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  } while (bVar12);" do (compound_statement "{\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar13 = *pbVar11 < *pbVar8;\n    bVar12 = *pbVar11 == *pbVar8;\n    pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n    pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;\n  }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar8;" (assignment_expression "bVar13 = *pbVar11 < *pbVar8" identifier = (binary_expression "*pbVar11 < *pbVar8" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar12 = *pbVar11 == *pbVar8;" (assignment_expression "bVar12 = *pbVar11 == *pbVar8" identifier = (binary_expression "*pbVar11 == *pbVar8" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar13 && !bVar12) != bVar13) {\n    return 0;\n  }" if (parenthesized_expression "((!bVar13 && !bVar12) != bVar13)" ( (binary_expression "(!bVar13 && !bVar12) != bVar13" (parenthesized_expression "(!bVar13 && !bVar12)" ( (binary_expression "!bVar13 && !bVar12" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) != identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar15 = pbVar4[3];" (assignment_expression "bVar15 = pbVar4[3]" identifier = (subscript_expression "pbVar4[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar15 != 0x69) && (bVar15 != 0x66)) {\n    return 0;\n  }" if (parenthesized_expression "((bVar15 != 0x69) && (bVar15 != 0x66))" ( (binary_expression "(bVar15 != 0x69) && (bVar15 != 0x66)" (parenthesized_expression "(bVar15 != 0x69)" ( (binary_expression "bVar15 != 0x69" identifier != number_literal) )) && (parenthesized_expression "(bVar15 != 0x66)" ( (binary_expression "bVar15 != 0x66" identifier != number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar10 = " type_info node";" (assignment_expression "pcVar10 = " type_info node"" identifier = (string_literal "" type_info node"" " string_content ")) ;) (if_statement "if (bVar15 != 0x69) {\n    pcVar10 = " type_info function";\n  }" if (parenthesized_expression "(bVar15 != 0x69)" ( (binary_expression "bVar15 != 0x69" identifier != number_literal) )) (compound_statement "{\n    pcVar10 = " type_info function";\n  }" { (expression_statement "pcVar10 = " type_info function";" (assignment_expression "pcVar10 = " type_info function"" identifier = (string_literal "" type_info function"" " string_content ")) ;) })) (expression_statement "*mangled = (char *)(pbVar4 + 4);" (assignment_expression "*mangled = (char *)(pbVar4 + 4)" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)(pbVar4 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar4 + 4)" ( (binary_expression "pbVar4 + 4" identifier + number_literal) )))) ;) (expression_statement "bVar15 = pbVar4[4];" (assignment_expression "bVar15 = pbVar4[4]" identifier = (subscript_expression "pbVar4[4]" identifier [ number_literal ])) ;) (if_statement "if (bVar15 != 0x51) {\n    if (bVar15 == 0x74) {\n      iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar15 != 0x4b) {\n      iVar2 = do_type(work,mangled,declp);\n      goto LAB_0048bb64;\n    }\n  }" if (parenthesized_expression "(bVar15 != 0x51)" ( (binary_expression "bVar15 != 0x51" identifier != number_literal) )) (compound_statement "{\n    if (bVar15 == 0x74) {\n      iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar15 != 0x4b) {\n      iVar2 = do_type(work,mangled,declp);\n      goto LAB_0048bb64;\n    }\n  }" { (if_statement "if (bVar15 == 0x74) {\n      iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n      goto LAB_0048bb64;\n    }" if (parenthesized_expression "(bVar15 == 0x74)" ( (binary_expression "bVar15 == 0x74" identifier == number_literal) )) (compound_statement "{\n      iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);\n      goto LAB_0048bb64;\n    }" { (expression_statement "iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1);" (assignment_expression "iVar2 = demangle_template(work,mangled,declp,(string *)0x0,1,1)" identifier = (call_expression "demangle_template(work,mangled,declp,(string *)0x0,1,1)" identifier (argument_list "(work,mangled,declp,(string *)0x0,1,1)" ( identifier , identifier , identifier , (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , number_literal )))) ;) (goto_statement "goto LAB_0048bb64;" goto statement_identifier ;) })) (if_statement "if (bVar15 != 0x4b) {\n      iVar2 = do_type(work,mangled,declp);\n      goto LAB_0048bb64;\n    }" if (parenthesized_expression "(bVar15 != 0x4b)" ( (binary_expression "bVar15 != 0x4b" identifier != number_literal) )) (compound_statement "{\n      iVar2 = do_type(work,mangled,declp);\n      goto LAB_0048bb64;\n    }" { (expression_statement "iVar2 = do_type(work,mangled,declp);" (assignment_expression "iVar2 = do_type(work,mangled,declp)" identifier = (call_expression "do_type(work,mangled,declp)" identifier (argument_list "(work,mangled,declp)" ( identifier , identifier , identifier )))) ;) (goto_statement "goto LAB_0048bb64;" goto statement_identifier ;) })) })) (expression_statement "iVar2 = demangle_qualified(work,mangled,declp,0,1);" (assignment_expression "iVar2 = demangle_qualified(work,mangled,declp,0,1)" identifier = (call_expression "demangle_qualified(work,mangled,declp,0,1)" identifier (argument_list "(work,mangled,declp,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;) (labeled_statement "LAB_0048bb64:\n  if ((iVar2 != 0) && (**mangled == '\0')) {\n    if (*pcVar10 == '\0') {\n      return iVar2;\n    }\n    string_append(declp,pcVar10);\n    return iVar2;\n  }" statement_identifier : (if_statement "if ((iVar2 != 0) && (**mangled == '\0')) {\n    if (*pcVar10 == '\0') {\n      return iVar2;\n    }\n    string_append(declp,pcVar10);\n    return iVar2;\n  }" if (parenthesized_expression "((iVar2 != 0) && (**mangled == '\0'))" ( (binary_expression "(iVar2 != 0) && (**mangled == '\0')" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(**mangled == '\0')" ( (binary_expression "**mangled == '\0'" (pointer_expression "**mangled" * (pointer_expression "*mangled" * identifier)) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if (*pcVar10 == '\0') {\n      return iVar2;\n    }\n    string_append(declp,pcVar10);\n    return iVar2;\n  }" { (if_statement "if (*pcVar10 == '\0') {\n      return iVar2;\n    }" if (parenthesized_expression "(*pcVar10 == '\0')" ( (binary_expression "*pcVar10 == '\0'" (pointer_expression "*pcVar10" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return iVar2;\n    }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "string_append(declp,pcVar10);" (call_expression "string_append(declp,pcVar10)" identifier (argument_list "(declp,pcVar10)" ( identifier , identifier ))) ;) (return_statement "return iVar2;" return identifier ;) }))) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_0048bf80:\n  pbVar11 = (byte *)*mangled;" statement_identifier : (expression_statement "pbVar11 = (byte *)*mangled;" (assignment_expression "pbVar11 = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;)) (goto_statement "goto LAB_0048bbfb;" goto statement_identifier ;) })))
(translation_unit "int FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char local_78 [72];\n  \n  bVar17 = 0;\n  pbVar5 = (byte *)*param_2;\n  bVar14 = *pbVar5 < 0x5f;\n  bVar16 = *pbVar5 == 0x5f;\n  if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar7 = 8;\n  pbVar13 = pbVar5;\n  pbVar10 = (byte *)"__thunk_";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }\n  lVar7 = 3;\n  pbVar13 = pbVar5;\n  pbVar10 = &DAT_00588187;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);\n  if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }\n  bVar17 = pbVar5[3];\n  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }\n  pcVar12 = " type_info node";\n  if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }\n  *param_2 = (long)(pbVar5 + 4);\n  bVar17 = pbVar5[4];\n  if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar13 = (byte *)*param_2;\n  goto LAB_0048bbfb;\n}\n\n" (function_definition "int FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char local_78 [72];\n  \n  bVar17 = 0;\n  pbVar5 = (byte *)*param_2;\n  bVar14 = *pbVar5 < 0x5f;\n  bVar16 = *pbVar5 == 0x5f;\n  if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar7 = 8;\n  pbVar13 = pbVar5;\n  pbVar10 = (byte *)"__thunk_";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }\n  lVar7 = 3;\n  pbVar13 = pbVar5;\n  pbVar10 = &DAT_00588187;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);\n  if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }\n  bVar17 = pbVar5[3];\n  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }\n  pcVar12 = " type_info node";\n  if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }\n  *param_2 = (long)(pbVar5 + 4);\n  bVar17 = pbVar5[4];\n  if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar13 = (byte *)*param_2;\n  goto LAB_0048bbfb;\n}" primitive_type (function_declarator "FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)" identifier (parameter_list "(byte *param_1,long *param_2,undefined8 param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char local_78 [72];\n  \n  bVar17 = 0;\n  pbVar5 = (byte *)*param_2;\n  bVar14 = *pbVar5 < 0x5f;\n  bVar16 = *pbVar5 == 0x5f;\n  if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar7 = 8;\n  pbVar13 = pbVar5;\n  pbVar10 = (byte *)"__thunk_";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }\n  lVar7 = 3;\n  pbVar13 = pbVar5;\n  pbVar10 = &DAT_00588187;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);\n  if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }\n  bVar17 = pbVar5[3];\n  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }\n  pcVar12 = " type_info node";\n  if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }\n  *param_2 = (long)(pbVar5 + 4);\n  bVar17 = pbVar5[4];\n  if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar13 = (byte *)*param_2;\n  goto LAB_0048bbfb;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "char local_78 [72];" primitive_type (array_declarator "local_78 [72]" identifier [ number_literal ]) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "bVar14 = *pbVar5 < 0x5f;" (assignment_expression "bVar14 = *pbVar5 < 0x5f" identifier = (binary_expression "*pbVar5 < 0x5f" (pointer_expression "*pbVar5" * identifier) < number_literal)) ;) (expression_statement "bVar16 = *pbVar5 == 0x5f;" (assignment_expression "bVar16 = *pbVar5 == 0x5f" identifier = (binary_expression "*pbVar5 == 0x5f" (pointer_expression "*pbVar5" * identifier) == number_literal)) ;) (if_statement "if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }" { (labeled_statement "LAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);" statement_identifier : (expression_statement "pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);" (assignment_expression "pcVar12 = strchr("0123456789Qt",(int)(char)bVar1)" identifier = (call_expression "strchr("0123456789Qt",(int)(char)bVar1)" identifier (argument_list "("0123456789Qt",(int)(char)bVar1)" ( (string_literal ""0123456789Qt"" " string_content ") , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )))) ;)) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = pcVar12 == (char *)0x0;" (assignment_expression "bVar16 = pcVar12 == (char *)0x0" identifier = (binary_expression "pcVar12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }" { (expression_statement "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);" (assignment_expression "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar5,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar5,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = pbVar13 == (byte *)0x0;" (assignment_expression "bVar16 = pbVar13 == (byte *)0x0" identifier = (binary_expression "pbVar13 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }" { (expression_statement "*param_2 = (long)(pbVar5 + 1);" (assignment_expression "*param_2 = (long)(pbVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar5 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 1)" ( (binary_expression "pbVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" if (parenthesized_expression "(bVar1 == 0x51)" ( (binary_expression "bVar1 == 0x51" identifier == number_literal) )) (compound_statement "{\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }" { (labeled_statement "LAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" statement_identifier : (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier = (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier (argument_list "(param_1,param_2,param_3,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;)) }) (else_clause "else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" else (compound_statement "{\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" { (if_statement "if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }" if (parenthesized_expression "(bVar1 != 0x74)" ( (binary_expression "bVar1 != 0x74" identifier != number_literal) )) (compound_statement "{\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }" { (if_statement "if (bVar1 == 0x4b) goto LAB_0048bf00;" if (parenthesized_expression "(bVar1 == 0x4b)" ( (binary_expression "bVar1 == 0x4b" identifier == number_literal) )) (goto_statement "goto LAB_0048bf00;" goto statement_identifier ;)) (expression_statement "uVar3 = FUN_00486160(param_2);" (assignment_expression "uVar3 = FUN_00486160(param_2)" identifier = (call_expression "FUN_00486160(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if ((int)uVar3 < 0) {\n                return 0;\n              }" if (parenthesized_expression "((int)uVar3 < 0)" ( (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "sVar6 = strlen((char *)pbVar5);" (assignment_expression "sVar6 = strlen((char *)pbVar5)" identifier = (call_expression "strlen((char *)pbVar5)" identifier (argument_list "((char *)pbVar5)" ( (cast_expression "(char *)pbVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "uVar9 = (ulong)(int)uVar3;" (assignment_expression "uVar9 = (ulong)(int)uVar3" identifier = (cast_expression "(ulong)(int)uVar3" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }" if (parenthesized_expression "((long)sVar6 < (long)uVar9)" ( (binary_expression "(long)sVar6 < (long)uVar9" (cast_expression "(long)sVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < (cast_expression "(long)uVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar14 = uVar3 < 10;" (assignment_expression "bVar14 = uVar3 < 10" identifier = (binary_expression "uVar3 < 10" identifier < number_literal)) ;) (expression_statement "bVar16 = uVar3 == 10;" (assignment_expression "bVar16 = uVar3 == 10" identifier = (binary_expression "uVar3 == 10" identifier == number_literal)) ;) (expression_statement "uVar8 = uVar9;" (assignment_expression "uVar8 = uVar9" identifier = identifier) ;) (if_statement "if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" if (parenthesized_expression "((int)uVar3 < 0xb)" ( (binary_expression "(int)uVar3 < 0xb" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }" { (if_statement "if (uVar3 != 0) goto LAB_0048bd6c;" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0048bd6c;" goto statement_identifier ;)) }) (else_clause "else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" else (compound_statement "{\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" { (expression_statement "lVar7 = 8;" (assignment_expression "lVar7 = 8" identifier = number_literal) ;) (expression_statement "pbVar10 = pbVar5;" (assignment_expression "pbVar10 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar11 = (byte *)"_GLOBAL_";" (assignment_expression "pbVar11 = (byte *)"_GLOBAL_"" identifier = (cast_expression "(byte *)"_GLOBAL_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_"" " string_content "))) ;) (do_statement "do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);" do (compound_statement "{\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar10 < *pbVar11;" (assignment_expression "bVar14 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar16 = *pbVar10 == *pbVar11;" (assignment_expression "bVar16 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (if_statement "if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }" if (parenthesized_expression "((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10]))" ( (binary_expression "(((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])" (parenthesized_expression "(((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e))" ( (binary_expression "((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)" (parenthesized_expression "((!bVar14 && !bVar16) == bVar14)" ( (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier) )) && (parenthesized_expression "(pbVar5[9] == 0x4e)" ( (binary_expression "pbVar5[9] == 0x4e" (subscript_expression "pbVar5[9]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(pbVar5[8] == pbVar5[10])" ( (binary_expression "pbVar5[8] == pbVar5[10]" (subscript_expression "pbVar5[8]" identifier [ number_literal ]) == (subscript_expression "pbVar5[10]" identifier [ number_literal ])) ))) )) (compound_statement "{\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }" { (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8])" identifier = (call_expression "strchr(&DAT_0067cb10,(int)(char)pbVar5[8])" identifier (argument_list "(&DAT_0067cb10,(int)(char)pbVar5[8])" ( (pointer_expression "&DAT_0067cb10" & identifier) , (cast_expression "(int)(char)pbVar5[8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar5[8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar5[8]" identifier [ number_literal ]))) )))) ;) (expression_statement "uVar8 = (ulong)uVar3;" (assignment_expression "uVar8 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }" if (parenthesized_expression "(pcVar12 != (char *)0x0)" ( (binary_expression "pcVar12 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);" (call_expression "FUN_00486550(param_3,"{anonymous}",(ulong)uVar3)" identifier (argument_list "(param_3,"{anonymous}",(ulong)uVar3)" ( identifier , (string_literal ""{anonymous}"" " string_content ") , (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pbVar5 = (byte *)(uVar9 + *param_2);" (assignment_expression "pbVar5 = (byte *)(uVar9 + *param_2)" identifier = (cast_expression "(byte *)(uVar9 + *param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + *param_2)" ( (binary_expression "uVar9 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) )))) ;) (expression_statement "*param_2 = (long)pbVar5;" (assignment_expression "*param_2 = (long)pbVar5" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);" (assignment_expression "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar5,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar5,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) (goto_statement "goto LAB_0048beab;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);" statement_identifier : (expression_statement "FUN_004864a0(param_3,pbVar5,uVar8);" (call_expression "FUN_004864a0(param_3,pbVar5,uVar8)" identifier (argument_list "(param_3,pbVar5,uVar8)" ( identifier , identifier , identifier ))) ;)) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) }))) (expression_statement "pbVar5 = pbVar5 + uVar9;" (assignment_expression "pbVar5 = pbVar5 + uVar9" identifier = (binary_expression "pbVar5 + uVar9" identifier + identifier)) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "*param_2 = (long)pbVar5;" (assignment_expression "*param_2 = (long)pbVar5" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (goto_statement "goto LAB_0048beab;" goto statement_identifier ;) })) (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier = (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier (argument_list "(param_1,param_2,param_3,0,1,1)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal )))) ;) }))) (if_statement "if (iVar2 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (labeled_statement "LAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }" statement_identifier : (if_statement "if (pbVar13 != pbVar5) {\n            return 0;\n          }" if (parenthesized_expression "(pbVar13 != pbVar5)" ( (binary_expression "pbVar13 != pbVar5" identifier != identifier) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) }))) (expression_statement "bVar17 = *param_1;" (assignment_expression "bVar17 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_2 = (long)(pbVar13 + 1);" (assignment_expression "*param_2 = (long)(pbVar13 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar13 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar13 + 1)" ( (binary_expression "pbVar13 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar12 = ".";" (assignment_expression "pcVar12 = "."" identifier = (string_literal ""."" " string_content ")) ;) (if_statement "if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }" if (parenthesized_expression "((bVar17 & 4) == 0)" ( (binary_expression "(bVar17 & 4) == 0" (parenthesized_expression "(bVar17 & 4)" ( (binary_expression "bVar17 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            pcVar12 = "::";\n          }" { (expression_statement "pcVar12 = "::";" (assignment_expression "pcVar12 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) })) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" identifier (argument_list "(param_3,pcVar12)" ( identifier , identifier ))) ;) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "sVar6 = strlen(pcVar12);" (assignment_expression "sVar6 = strlen(pcVar12)" identifier = (call_expression "strlen(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (if_statement "if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }" if (parenthesized_expression "((int)sVar6 != 0)" ( (binary_expression "(int)sVar6 != 0" (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }" { (expression_statement "FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);" (call_expression "FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff)" identifier (argument_list "(param_3,pcVar12,sVar6 & 0xffffffff)" ( identifier , identifier , (binary_expression "sVar6 & 0xffffffff" identifier & number_literal) ))) ;) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) })) (expression_statement "*param_2 = (long)(pcVar12 + (int)sVar6);" (assignment_expression "*param_2 = (long)(pcVar12 + (int)sVar6)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pcVar12 + (int)sVar6)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pcVar12 + (int)sVar6)" ( (binary_expression "pcVar12 + (int)sVar6" identifier + (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (return_statement "return iVar2;" return identifier ;) })) })) }) (else_clause "else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" else (compound_statement "{\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" { (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1)" identifier = (call_expression "strchr(&DAT_0067cb10,(int)(char)bVar1)" identifier (argument_list "(&DAT_0067cb10,(int)(char)bVar1)" ( (pointer_expression "&DAT_0067cb10" & identifier) , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) )))) ;) (if_statement "if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }" if (parenthesized_expression "((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f))" ( (binary_expression "(pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)" (parenthesized_expression "(pcVar12 != (char *)0x0)" ( (binary_expression "pcVar12 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pbVar5[2] == 0x5f)" ( (binary_expression "pbVar5[2] == 0x5f" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }" { (expression_statement "*param_2 = (long)(pbVar5 + 3);" (assignment_expression "*param_2 = (long)(pbVar5 + 3)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar5 + 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 3)" ( (binary_expression "pbVar5 + 3" identifier + number_literal) )))) ;) (expression_statement "*(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;" (assignment_expression "*(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x3c) + 1" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (if_statement "if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" if (parenthesized_expression "(bVar1 == 0x5f)" ( (binary_expression "bVar1 == 0x5f" identifier == number_literal) )) (compound_statement "{\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }" { (expression_statement "bVar14 = pbVar5[2] < 0x76;" (assignment_expression "bVar14 = pbVar5[2] < 0x76" identifier = (binary_expression "pbVar5[2] < 0x76" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar16 = pbVar5[2] == 0x76;" (assignment_expression "bVar16 = pbVar5[2] == 0x76" identifier = (binary_expression "pbVar5[2] == 0x76" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }" { (expression_statement "bVar14 = pbVar5[3] < 0x74;" (assignment_expression "bVar14 = pbVar5[3] < 0x74" identifier = (binary_expression "pbVar5[3] < 0x74" (subscript_expression "pbVar5[3]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar16 = pbVar5[3] == 0x74;" (assignment_expression "bVar16 = pbVar5[3] == 0x74" identifier = (binary_expression "pbVar5[3] == 0x74" (subscript_expression "pbVar5[3]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }" { (expression_statement "bVar14 = pbVar5[4] < 0x5f;" (assignment_expression "bVar14 = pbVar5[4] < 0x5f" identifier = (binary_expression "pbVar5[4] < 0x5f" (subscript_expression "pbVar5[4]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar16 = pbVar5[4] == 0x5f;" (assignment_expression "bVar16 = pbVar5[4] == 0x5f" identifier = (binary_expression "pbVar5[4] == 0x5f" (subscript_expression "pbVar5[4]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }" { (expression_statement "pbVar13 = pbVar5 + 5;" (assignment_expression "pbVar13 = pbVar5 + 5" identifier = (binary_expression "pbVar5 + 5" identifier + number_literal)) ;) (labeled_statement "LAB_0048bbeb:\n              *param_2 = (long)pbVar13;" statement_identifier : (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;)) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0048bbfb:\n              bVar17 = *pbVar13;" statement_identifier : (expression_statement "bVar17 = *pbVar13;" (assignment_expression "bVar17 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;)) (do_statement "do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );" do (compound_statement "{\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              }" { (if_statement "if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }" if (parenthesized_expression "(bVar17 == 0)" ( (binary_expression "bVar17 == 0" identifier == number_literal) )) (compound_statement "{\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }" { (expression_statement "FUN_00486550(param_3," virtual table");" (call_expression "FUN_00486550(param_3," virtual table")" identifier (argument_list "(param_3," virtual table")" ( identifier , (string_literal "" virtual table"" " string_content ") ))) ;) (return_statement "return iVar2;" return identifier ;) })) (if_statement "if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" if (parenthesized_expression "(bVar17 == 0x51)" ( (binary_expression "bVar17 == 0x51" identifier == number_literal) )) (compound_statement "{\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }" { (labeled_statement "LAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" statement_identifier : (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier = (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier (argument_list "(param_1,param_2,param_3,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;)) (labeled_statement "LAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;" statement_identifier : (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;)) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar13,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) (if_statement "if (iVar2 == 0) {\n                    return 0;\n                  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    return 0;\n                  }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" else (compound_statement "{\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" { (if_statement "if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }" if (parenthesized_expression "(bVar17 == 0x74)" ( (binary_expression "bVar17 == 0x74" identifier == number_literal) )) (compound_statement "{\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }" { (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier = (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier (argument_list "(param_1,param_2,param_3,0,1,1)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal )))) ;) (goto_statement "goto LAB_0048bf3f;" goto statement_identifier ;) })) (if_statement "if (bVar17 == 0x4b) goto LAB_0048bf60;" if (parenthesized_expression "(bVar17 == 0x4b)" ( (binary_expression "bVar17 == 0x4b" identifier == number_literal) )) (goto_statement "goto LAB_0048bf60;" goto statement_identifier ;)) (if_statement "if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" if (parenthesized_expression "(((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0)" ( (binary_expression "((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4)" ( (binary_expression "(&DAT_0058aa80)[(ulong)bVar17 * 2] & 4" (subscript_expression "(&DAT_0058aa80)[(ulong)bVar17 * 2]" (parenthesized_expression "(&DAT_0058aa80)" ( (pointer_expression "&DAT_0058aa80" & identifier) )) [ (binary_expression "(ulong)bVar17 * 2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" { (expression_statement "sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10)" identifier = (call_expression "strcspn((char *)pbVar13,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar13,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) )))) ;) (expression_statement "iVar4 = (int)sVar6;" (assignment_expression "iVar4 = (int)sVar6" identifier = (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" statement_identifier : (if_statement "if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" { (expression_statement "FUN_004864a0(param_3,pbVar13,iVar4);" (call_expression "FUN_004864a0(param_3,pbVar13,iVar4)" identifier (argument_list "(param_3,pbVar13,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) }))) (expression_statement "pbVar13 = pbVar13 + iVar4;" (assignment_expression "pbVar13 = pbVar13 + iVar4" identifier = (binary_expression "pbVar13 + iVar4" identifier + identifier)) ;) (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar13,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) }) (else_clause "else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" else (compound_statement "{\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" { (expression_statement "iVar4 = FUN_00486160(param_2);" (assignment_expression "iVar4 = FUN_00486160(param_2)" identifier = (call_expression "FUN_00486160(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "sVar6 = strlen((char *)pbVar13);" (assignment_expression "sVar6 = strlen((char *)pbVar13)" identifier = (call_expression "strlen((char *)pbVar13)" identifier (argument_list "((char *)pbVar13)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }" if (parenthesized_expression "(iVar4 <= (int)sVar6)" ( (binary_expression "iVar4 <= (int)sVar6" identifier <= (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }" { (if_statement "if (iVar4 == -1) {\n                        return 0;\n                      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n                        return 0;\n                      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0048bc3f;" goto statement_identifier ;) })) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier = (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" identifier (argument_list "((char *)pbVar13,&DAT_0067cb10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&DAT_0067cb10" & identifier) ))))) ;) }))) }))) (if_statement "if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;" if (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0048bf80;" goto statement_identifier ;)) (if_statement "if (pbVar13 != pbVar5) {\n                  return 0;\n                }" if (parenthesized_expression "(pbVar13 != pbVar5)" ( (binary_expression "pbVar13 != pbVar5" identifier != identifier) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar12 = "::";" (assignment_expression "pcVar12 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) (if_statement "if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }" if (parenthesized_expression "((*param_1 & 4) != 0)" ( (binary_expression "(*param_1 & 4) != 0" (parenthesized_expression "(*param_1 & 4)" ( (binary_expression "*param_1 & 4" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                  pcVar12 = ".";\n                }" { (expression_statement "pcVar12 = ".";" (assignment_expression "pcVar12 = "."" identifier = (string_literal ""."" " string_content ")) ;) })) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" identifier (argument_list "(param_3,pcVar12)" ( identifier , identifier ))) ;) (expression_statement "pbVar13 = (byte *)(*param_2 + 1);" (assignment_expression "pbVar13 = (byte *)(*param_2 + 1)" identifier = (cast_expression "(byte *)(*param_2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 1)" ( (binary_expression "*param_2 + 1" (pointer_expression "*param_2" * identifier) + number_literal) )))) ;) (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)pbVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "bVar17 = *pbVar13;" (assignment_expression "bVar17 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) })) }) (else_clause "else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" else (compound_statement "{\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" { (if_statement "if (bVar1 != 0x76) goto LAB_0048bcb8;" if (parenthesized_expression "(bVar1 != 0x76)" ( (binary_expression "bVar1 != 0x76" identifier != number_literal) )) (goto_statement "goto LAB_0048bcb8;" goto statement_identifier ;)) (expression_statement "bVar14 = pbVar5[2] < 0x74;" (assignment_expression "bVar14 = pbVar5[2] < 0x74" identifier = (binary_expression "pbVar5[2] < 0x74" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar16 = pbVar5[2] == 0x74;" (assignment_expression "bVar16 = pbVar5[2] == 0x74" identifier = (binary_expression "pbVar5[2] == 0x74" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }" { (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = pbVar5[3] == 0;" (assignment_expression "bVar16 = pbVar5[3] == 0" identifier = (binary_expression "pbVar5[3] == 0" (subscript_expression "pbVar5[3]" identifier [ number_literal ]) == number_literal)) ;) (if_statement "if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }" { (expression_statement "pbVar13 = pbVar5 + 4;" (assignment_expression "pbVar13 = pbVar5 + 4" identifier = (binary_expression "pbVar5 + 4" identifier + number_literal)) ;) (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3])" identifier = (call_expression "strchr(&DAT_0067cb10,(int)(char)pbVar5[3])" identifier (argument_list "(&DAT_0067cb10,(int)(char)pbVar5[3])" ( (pointer_expression "&DAT_0067cb10" & identifier) , (cast_expression "(int)(char)pbVar5[3]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar5[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar5[3]" identifier [ number_literal ]))) )))) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = pcVar12 == (char *)0x0;" (assignment_expression "bVar16 = pcVar12 == (char *)0x0" identifier = (binary_expression "pcVar12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar16) goto LAB_0048bbeb;" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (goto_statement "goto LAB_0048bbeb;" goto statement_identifier ;)) })) })) }))) }))) })) (expression_statement "lVar7 = 8;" (assignment_expression "lVar7 = 8" identifier = number_literal) ;) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"__thunk_";" (assignment_expression "pbVar10 = (byte *)"__thunk_"" identifier = (cast_expression "(byte *)"__thunk_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""__thunk_"" " string_content "))) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar13 < *pbVar10;" (assignment_expression "bVar14 = *pbVar13 < *pbVar10" identifier = (binary_expression "*pbVar13 < *pbVar10" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar16 = *pbVar13 == *pbVar10;" (assignment_expression "bVar16 = *pbVar13 == *pbVar10" identifier = (binary_expression "*pbVar13 == *pbVar10" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar14 = (!bVar14 && !bVar16) == bVar14;" (assignment_expression "bVar14 = (!bVar14 && !bVar16) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }" { (expression_statement "*param_2 = (long)(pbVar5 + 8);" (assignment_expression "*param_2 = (long)(pbVar5 + 8)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar5 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 8)" ( (binary_expression "pbVar5 + 8" identifier + number_literal) )))) ;) (expression_statement "iVar2 = FUN_00486160(param_2);" (assignment_expression "iVar2 = FUN_00486160(param_2)" identifier = (call_expression "FUN_00486160(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar2 == -1) {\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)*param_2 != '_') {\n      return 0;\n    }" if (parenthesized_expression "(*(char *)*param_2 != '_')" ( (binary_expression "*(char *)*param_2 != '_'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) != (char_literal "'_'" ' character ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*param_2 = (long)((char *)*param_2 + 1);" (assignment_expression "*param_2 = (long)((char *)*param_2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)((char *)*param_2 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((char *)*param_2 + 1)" ( (binary_expression "(char *)*param_2 + 1" (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) + number_literal) )))) ;) (expression_statement "pcVar12 = (char *)FUN_0048c0f0(param_1);" (assignment_expression "pcVar12 = (char *)FUN_0048c0f0(param_1)" identifier = (cast_expression "(char *)FUN_0048c0f0(param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0048c0f0(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (pcVar12 == (char *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(pcVar12 == (char *)0x0)" ( (binary_expression "pcVar12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);" (call_expression "sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2)" identifier (argument_list "(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2)" ( identifier , (string_literal ""virtual function thunk (delta:%d) for "" " string_content ") , (binary_expression "(ulong)(uint)-iVar2" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) - identifier) ))) ;) (if_statement "if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }" if (parenthesized_expression "(local_78[0] != '\0')" ( (binary_expression "local_78[0] != '\0'" (subscript_expression "local_78[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00486550(param_3,local_78);\n    }" { (expression_statement "FUN_00486550(param_3,local_78);" (call_expression "FUN_00486550(param_3,local_78)" identifier (argument_list "(param_3,local_78)" ( identifier , identifier ))) ;) })) (if_statement "if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }" if (parenthesized_expression "(*pcVar12 != '\0')" ( (binary_expression "*pcVar12 != '\0'" (pointer_expression "*pcVar12" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00486550(param_3,pcVar12);\n    }" { (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" identifier (argument_list "(param_3,pcVar12)" ( identifier , identifier ))) ;) })) (expression_statement "free(pcVar12);" (call_expression "free(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier ))) ;) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "sVar6 = strlen(pcVar12);" (assignment_expression "sVar6 = strlen(pcVar12)" identifier = (call_expression "strlen(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "*param_2 = (long)(pcVar12 + (int)sVar6);" (assignment_expression "*param_2 = (long)(pcVar12 + (int)sVar6)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pcVar12 + (int)sVar6)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pcVar12 + (int)sVar6)" ( (binary_expression "pcVar12 + (int)sVar6" identifier + (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "lVar7 = 3;" (assignment_expression "lVar7 = 3" identifier = number_literal) ;) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar10 = &DAT_00588187;" (assignment_expression "pbVar10 = &DAT_00588187" identifier = (pointer_expression "&DAT_00588187" & identifier)) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar13 < *pbVar10;" (assignment_expression "bVar15 = *pbVar13 < *pbVar10" identifier = (binary_expression "*pbVar13 < *pbVar10" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar14 = *pbVar13 == *pbVar10;" (assignment_expression "bVar14 = *pbVar13 == *pbVar10" identifier = (binary_expression "*pbVar13 == *pbVar10" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }" if (parenthesized_expression "((!bVar15 && !bVar14) != bVar15)" ( (binary_expression "(!bVar15 && !bVar14) != bVar15" (parenthesized_expression "(!bVar15 && !bVar14)" ( (binary_expression "!bVar15 && !bVar14" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) != identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar17 = pbVar5[3];" (assignment_expression "bVar17 = pbVar5[3]" identifier = (subscript_expression "pbVar5[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }" if (parenthesized_expression "((bVar17 != 0x69) && (bVar17 != 0x66))" ( (binary_expression "(bVar17 != 0x69) && (bVar17 != 0x66)" (parenthesized_expression "(bVar17 != 0x69)" ( (binary_expression "bVar17 != 0x69" identifier != number_literal) )) && (parenthesized_expression "(bVar17 != 0x66)" ( (binary_expression "bVar17 != 0x66" identifier != number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar12 = " type_info node";" (assignment_expression "pcVar12 = " type_info node"" identifier = (string_literal "" type_info node"" " string_content ")) ;) (if_statement "if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }" if (parenthesized_expression "(bVar17 != 0x69)" ( (binary_expression "bVar17 != 0x69" identifier != number_literal) )) (compound_statement "{\n    pcVar12 = " type_info function";\n  }" { (expression_statement "pcVar12 = " type_info function";" (assignment_expression "pcVar12 = " type_info function"" identifier = (string_literal "" type_info function"" " string_content ")) ;) })) (expression_statement "*param_2 = (long)(pbVar5 + 4);" (assignment_expression "*param_2 = (long)(pbVar5 + 4)" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(pbVar5 + 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(pbVar5 + 4)" ( (binary_expression "pbVar5 + 4" identifier + number_literal) )))) ;) (expression_statement "bVar17 = pbVar5[4];" (assignment_expression "bVar17 = pbVar5[4]" identifier = (subscript_expression "pbVar5[4]" identifier [ number_literal ])) ;) (if_statement "if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }" if (parenthesized_expression "(bVar17 != 0x51)" ( (binary_expression "bVar17 != 0x51" identifier != number_literal) )) (compound_statement "{\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }" { (if_statement "if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }" if (parenthesized_expression "(bVar17 == 0x74)" ( (binary_expression "bVar17 == 0x74" identifier == number_literal) )) (compound_statement "{\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }" { (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier = (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" identifier (argument_list "(param_1,param_2,param_3,0,1,1)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal )))) ;) (goto_statement "goto LAB_0048bb64;" goto statement_identifier ;) })) (if_statement "if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }" if (parenthesized_expression "(bVar17 != 0x4b)" ( (binary_expression "bVar17 != 0x4b" identifier != number_literal) )) (compound_statement "{\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }" { (expression_statement "iVar2 = FUN_00487a30(param_1,param_2,param_3);" (assignment_expression "iVar2 = FUN_00487a30(param_1,param_2,param_3)" identifier = (call_expression "FUN_00487a30(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (goto_statement "goto LAB_0048bb64;" goto statement_identifier ;) })) })) (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier = (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" identifier (argument_list "(param_1,param_2,param_3,0,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;) (labeled_statement "LAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" statement_identifier : (if_statement "if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" if (parenthesized_expression "((iVar2 != 0) && (*(char *)*param_2 == '\0'))" ( (binary_expression "(iVar2 != 0) && (*(char *)*param_2 == '\0')" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)*param_2 == '\0')" ( (binary_expression "*(char *)*param_2 == '\0'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" { (if_statement "if (*pcVar12 == '\0') {\n      return iVar2;\n    }" if (parenthesized_expression "(*pcVar12 == '\0')" ( (binary_expression "*pcVar12 == '\0'" (pointer_expression "*pcVar12" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return iVar2;\n    }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" identifier (argument_list "(param_3,pcVar12)" ( identifier , identifier ))) ;) (return_statement "return iVar2;" return identifier ;) }))) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_0048bf80:\n  pbVar13 = (byte *)*param_2;" statement_identifier : (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;)) (goto_statement "goto LAB_0048bbfb;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT )))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * IDENT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (pointer_expression & IDENT) ))))) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , LIT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (return_statement return LIT ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT & LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (return_statement return IDENT ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT )))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (pointer_expression & IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , LIT )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (pointer_expression & IDENT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (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 (abstract_pointer_declarator *)) ) IDENT) , (pointer_expression & IDENT) ))))) ;) }))) }))) (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 != IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) })) })) }))) }))) })) (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 (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) - IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (return_statement return LIT ;) })) (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 { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , LIT )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) }))) (return_statement return LIT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "int FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char local_78 [72];\n  \n  bVar17 = 0;\n  pbVar5 = (byte *)*param_2;\n  bVar14 = *pbVar5 < 0x5f;\n  bVar16 = *pbVar5 == 0x5f;\n  if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar7 = 8;\n  pbVar13 = pbVar5;\n  pbVar10 = (byte *)"__thunk_";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }\n  lVar7 = 3;\n  pbVar13 = pbVar5;\n  pbVar10 = &DAT_00588187;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);\n  if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }\n  bVar17 = pbVar5[3];\n  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }\n  pcVar12 = " type_info node";\n  if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }\n  *param_2 = (long)(pbVar5 + 4);\n  bVar17 = pbVar5[4];\n  if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar13 = (byte *)*param_2;\n  goto LAB_0048bbfb;\n}" (primitive_type "int") (function_declarator "FUN_0048baa0(byte *param_1,long *param_2,undefined8 param_3)" (identifier "FUN_0048baa0") (parameter_list "(byte *param_1,long *param_2,undefined8 param_3)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  long lVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  char local_78 [72];\n  \n  bVar17 = 0;\n  pbVar5 = (byte *)*param_2;\n  bVar14 = *pbVar5 < 0x5f;\n  bVar16 = *pbVar5 == 0x5f;\n  if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }\n  lVar7 = 8;\n  pbVar13 = pbVar5;\n  pbVar10 = (byte *)"__thunk_";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }\n  lVar7 = 3;\n  pbVar13 = pbVar5;\n  pbVar10 = &DAT_00588187;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);\n  if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }\n  bVar17 = pbVar5[3];\n  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }\n  pcVar12 = " type_info node";\n  if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }\n  *param_2 = (long)(pbVar5 + 4);\n  bVar17 = pbVar5[4];\n  if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }\n  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }\n  return 0;\nLAB_0048bf80:\n  pbVar13 = (byte *)*param_2;\n  goto LAB_0048bbfb;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "char *pcVar12;" (primitive_type "char") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "bool bVar16;" (primitive_type "bool") (identifier "bVar16") (; ";")) (declaration "byte bVar17;" (type_identifier "byte") (identifier "bVar17") (; ";")) (declaration "char local_78 [72];" (primitive_type "char") (array_declarator "local_78 [72]" (identifier "local_78") ([ "[") (number_literal "72") (] "]")) (; ";")) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" (identifier "pbVar5") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "bVar14 = *pbVar5 < 0x5f;" (assignment_expression "bVar14 = *pbVar5 < 0x5f" (identifier "bVar14") (= "=") (binary_expression "*pbVar5 < 0x5f" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (number_literal "0x5f"))) (; ";")) (expression_statement "bVar16 = *pbVar5 == 0x5f;" (assignment_expression "bVar16 = *pbVar5 == 0x5f" (identifier "bVar16") (= "=") (binary_expression "*pbVar5 == 0x5f" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (number_literal "0x5f"))) (; ";")) (if_statement "if (bVar16) {\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (compound_statement "{\n    bVar1 = pbVar5[1];\n    if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar5[1]" (identifier "pbVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (bVar1 == 0) {\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }\n    else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(bVar1 == 0)" (( "(") (binary_expression "bVar1 == 0" (identifier "bVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);\n      bVar14 = false;\n      bVar16 = pcVar12 == (char *)0x0;\n      if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }\n    }" ({ "{") (labeled_statement "LAB_0048bcb8:\n      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);" (statement_identifier "LAB_0048bcb8") (: ":") (expression_statement "pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);" (assignment_expression "pcVar12 = strchr("0123456789Qt",(int)(char)bVar1)" (identifier "pcVar12") (= "=") (call_expression "strchr("0123456789Qt",(int)(char)bVar1)" (identifier "strchr") (argument_list "("0123456789Qt",(int)(char)bVar1)" (( "(") (string_literal ""0123456789Qt"" (" """) (string_content "0123456789Qt") (" """)) (, ",") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) () ")")))) (; ";"))) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar16 = pcVar12 == (char *)0x0;" (assignment_expression "bVar16 = pcVar12 == (char *)0x0" (identifier "bVar16") (= "=") (binary_expression "pcVar12 == (char *)0x0" (identifier "pcVar12") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!bVar16) {\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }" (if "if") (parenthesized_expression "(!bVar16)" (( "(") (unary_expression "!bVar16" (! "!") (identifier "bVar16")) () ")")) (compound_statement "{\n        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n        bVar14 = false;\n        bVar16 = pbVar13 == (byte *)0x0;\n        if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }\n      }" ({ "{") (expression_statement "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);" (assignment_expression "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" (identifier "pbVar13") (= "=") (cast_expression "(byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strpbrk((char *)pbVar5,&DAT_0067cb10)" (identifier "strpbrk") (argument_list "((char *)pbVar5,&DAT_0067cb10)" (( "(") (cast_expression "(char *)pbVar5" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar5")) (, ",") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) () ")"))))) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar16 = pbVar13 == (byte *)0x0;" (assignment_expression "bVar16 = pbVar13 == (byte *)0x0" (identifier "bVar16") (= "=") (binary_expression "pbVar13 == (byte *)0x0" (identifier "pbVar13") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!bVar16) {\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }" (if "if") (parenthesized_expression "(!bVar16)" (( "(") (unary_expression "!bVar16" (! "!") (identifier "bVar16")) () ")")) (compound_statement "{\n          *param_2 = (long)(pbVar5 + 1);\n          bVar1 = pbVar5[1];\n          if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }\n          if (iVar2 == 0) {\n            return 0;\n          }\n          pbVar5 = (byte *)*param_2;\nLAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }\n          bVar17 = *param_1;\n          *param_2 = (long)(pbVar13 + 1);\n          pcVar12 = ".";\n          if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }\n          FUN_00486550(param_3,pcVar12);\n          pcVar12 = (char *)*param_2;\n          sVar6 = strlen(pcVar12);\n          if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }\n          *param_2 = (long)(pcVar12 + (int)sVar6);\n          return iVar2;\n        }" ({ "{") (expression_statement "*param_2 = (long)(pbVar5 + 1);" (assignment_expression "*param_2 = (long)(pbVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(pbVar5 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pbVar5 + 1)" (( "(") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar5[1]" (identifier "pbVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (bVar1 == 0x51) {\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }\n          else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" (if "if") (parenthesized_expression "(bVar1 == 0x51)" (( "(") (binary_expression "bVar1 == 0x51" (identifier "bVar1") (== "==") (number_literal "0x51")) () ")")) (compound_statement "{\nLAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\n          }" ({ "{") (labeled_statement "LAB_0048bf00:\n            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (statement_identifier "LAB_0048bf00") (: ":") (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" (identifier "iVar2") (= "=") (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" (identifier "FUN_00489ed0") (argument_list "(param_1,param_2,param_3,0,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";"))) (} "}")) (else_clause "else {\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" (else "else") (compound_statement "{\n            if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }\n            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n          }" ({ "{") (if_statement "if (bVar1 != 0x74) {\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }" (if "if") (parenthesized_expression "(bVar1 != 0x74)" (( "(") (binary_expression "bVar1 != 0x74" (identifier "bVar1") (!= "!=") (number_literal "0x74")) () ")")) (compound_statement "{\n              if (bVar1 == 0x4b) goto LAB_0048bf00;\n              uVar3 = FUN_00486160(param_2);\n              if ((int)uVar3 < 0) {\n                return 0;\n              }\n              pbVar5 = (byte *)*param_2;\n              sVar6 = strlen((char *)pbVar5);\n              uVar9 = (ulong)(int)uVar3;\n              if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }\n              bVar14 = uVar3 < 10;\n              bVar16 = uVar3 == 10;\n              uVar8 = uVar9;\n              if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }\n              pbVar5 = pbVar5 + uVar9;\n              iVar2 = 1;\n              *param_2 = (long)pbVar5;\n              goto LAB_0048beab;\n            }" ({ "{") (if_statement "if (bVar1 == 0x4b) goto LAB_0048bf00;" (if "if") (parenthesized_expression "(bVar1 == 0x4b)" (( "(") (binary_expression "bVar1 == 0x4b" (identifier "bVar1") (== "==") (number_literal "0x4b")) () ")")) (goto_statement "goto LAB_0048bf00;" (goto "goto") (statement_identifier "LAB_0048bf00") (; ";"))) (expression_statement "uVar3 = FUN_00486160(param_2);" (assignment_expression "uVar3 = FUN_00486160(param_2)" (identifier "uVar3") (= "=") (call_expression "FUN_00486160(param_2)" (identifier "FUN_00486160") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if ((int)uVar3 < 0) {\n                return 0;\n              }" (if "if") (parenthesized_expression "((int)uVar3 < 0)" (( "(") (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                return 0;\n              }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" (identifier "pbVar5") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "sVar6 = strlen((char *)pbVar5);" (assignment_expression "sVar6 = strlen((char *)pbVar5)" (identifier "sVar6") (= "=") (call_expression "strlen((char *)pbVar5)" (identifier "strlen") (argument_list "((char *)pbVar5)" (( "(") (cast_expression "(char *)pbVar5" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar5")) () ")")))) (; ";")) (expression_statement "uVar9 = (ulong)(int)uVar3;" (assignment_expression "uVar9 = (ulong)(int)uVar3" (identifier "uVar9") (= "=") (cast_expression "(ulong)(int)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")))) (; ";")) (if_statement "if ((long)sVar6 < (long)uVar9) {\n                return 0;\n              }" (if "if") (parenthesized_expression "((long)sVar6 < (long)uVar9)" (( "(") (binary_expression "(long)sVar6 < (long)uVar9" (cast_expression "(long)sVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "sVar6")) (< "<") (cast_expression "(long)uVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar9"))) () ")")) (compound_statement "{\n                return 0;\n              }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar14 = uVar3 < 10;" (assignment_expression "bVar14 = uVar3 < 10" (identifier "bVar14") (= "=") (binary_expression "uVar3 < 10" (identifier "uVar3") (< "<") (number_literal "10"))) (; ";")) (expression_statement "bVar16 = uVar3 == 10;" (assignment_expression "bVar16 = uVar3 == 10" (identifier "bVar16") (= "=") (binary_expression "uVar3 == 10" (identifier "uVar3") (== "==") (number_literal "10"))) (; ";")) (expression_statement "uVar8 = uVar9;" (assignment_expression "uVar8 = uVar9" (identifier "uVar8") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if ((int)uVar3 < 0xb) {\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }\n              else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" (if "if") (parenthesized_expression "((int)uVar3 < 0xb)" (( "(") (binary_expression "(int)uVar3 < 0xb" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (< "<") (number_literal "0xb")) () ")")) (compound_statement "{\n                if (uVar3 != 0) goto LAB_0048bd6c;\n              }" ({ "{") (if_statement "if (uVar3 != 0) goto LAB_0048bd6c;" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0048bd6c;" (goto "goto") (statement_identifier "LAB_0048bd6c") (; ";"))) (} "}")) (else_clause "else {\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" (else "else") (compound_statement "{\n                lVar7 = 8;\n                pbVar10 = pbVar5;\n                pbVar11 = (byte *)"_GLOBAL_";\n                do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);\n                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }\nLAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);\n                pbVar5 = (byte *)*param_2;\n              }" ({ "{") (expression_statement "lVar7 = 8;" (assignment_expression "lVar7 = 8" (identifier "lVar7") (= "=") (number_literal "8")) (; ";")) (expression_statement "pbVar10 = pbVar5;" (assignment_expression "pbVar10 = pbVar5" (identifier "pbVar10") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "pbVar11 = (byte *)"_GLOBAL_";" (assignment_expression "pbVar11 = (byte *)"_GLOBAL_"" (identifier "pbVar11") (= "=") (cast_expression "(byte *)"_GLOBAL_"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""_GLOBAL_"" (" """) (string_content "_GLOBAL_") (" """)))) (; ";")) (do_statement "do {\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                } while (bVar16);" (do "do") (compound_statement "{\n                  if (lVar7 == 0) break;\n                  lVar7 = lVar7 + -1;\n                  bVar14 = *pbVar10 < *pbVar11;\n                  bVar16 = *pbVar10 == *pbVar11;\n                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;\n                }" ({ "{") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar10 < *pbVar11;" (assignment_expression "bVar14 = *pbVar10 < *pbVar11" (identifier "bVar14") (= "=") (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (< "<") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "bVar16 = *pbVar10 == *pbVar11;" (assignment_expression "bVar16 = *pbVar10 == *pbVar11" (identifier "bVar16") (= "=") (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (== "==") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar17")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar17 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar17")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (; ";")) (if_statement "if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])) {\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }" (if "if") (parenthesized_expression "((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10]))" (( "(") (binary_expression "(((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&\n                   (pbVar5[8] == pbVar5[10])" (parenthesized_expression "(((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e))" (( "(") (binary_expression "((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)" (parenthesized_expression "((!bVar14 && !bVar16) == bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" (( "(") (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar16" (! "!") (identifier "bVar16"))) () ")")) (== "==") (identifier "bVar14")) () ")")) (&& "&&") (parenthesized_expression "(pbVar5[9] == 0x4e)" (( "(") (binary_expression "pbVar5[9] == 0x4e" (subscript_expression "pbVar5[9]" (identifier "pbVar5") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0x4e")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(pbVar5[8] == pbVar5[10])" (( "(") (binary_expression "pbVar5[8] == pbVar5[10]" (subscript_expression "pbVar5[8]" (identifier "pbVar5") ([ "[") (number_literal "8") (] "]")) (== "==") (subscript_expression "pbVar5[10]" (identifier "pbVar5") ([ "[") (number_literal "10") (] "]"))) () ")"))) () ")")) (compound_statement "{\n                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);\n                  uVar8 = (ulong)uVar3;\n                  if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }\n                }" ({ "{") (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8])" (identifier "pcVar12") (= "=") (call_expression "strchr(&DAT_0067cb10,(int)(char)pbVar5[8])" (identifier "strchr") (argument_list "(&DAT_0067cb10,(int)(char)pbVar5[8])" (( "(") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) (, ",") (cast_expression "(int)(char)pbVar5[8]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar5[8]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar5[8]" (identifier "pbVar5") ([ "[") (number_literal "8") (] "]")))) () ")")))) (; ";")) (expression_statement "uVar8 = (ulong)uVar3;" (assignment_expression "uVar8 = (ulong)uVar3" (identifier "uVar8") (= "=") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) (; ";")) (if_statement "if (pcVar12 != (char *)0x0) {\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }" (if "if") (parenthesized_expression "(pcVar12 != (char *)0x0)" (( "(") (binary_expression "pcVar12 != (char *)0x0" (identifier "pcVar12") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    iVar2 = 1;\n                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);\n                    pbVar5 = (byte *)(uVar9 + *param_2);\n                    *param_2 = (long)pbVar5;\n                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);\n                    goto LAB_0048beab;\n                  }" ({ "{") (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);" (call_expression "FUN_00486550(param_3,"{anonymous}",(ulong)uVar3)" (identifier "FUN_00486550") (argument_list "(param_3,"{anonymous}",(ulong)uVar3)" (( "(") (identifier "param_3") (, ",") (string_literal ""{anonymous}"" (" """) (string_content "{anonymous}") (" """)) (, ",") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3")) () ")"))) (; ";")) (expression_statement "pbVar5 = (byte *)(uVar9 + *param_2);" (assignment_expression "pbVar5 = (byte *)(uVar9 + *param_2)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)(uVar9 + *param_2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 + *param_2)" (( "(") (binary_expression "uVar9 + *param_2" (identifier "uVar9") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")))) (; ";")) (expression_statement "*param_2 = (long)pbVar5;" (assignment_expression "*param_2 = (long)pbVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)pbVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar5"))) (; ";")) (expression_statement "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);" (assignment_expression "pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" (identifier "pbVar13") (= "=") (cast_expression "(byte *)strpbrk((char *)pbVar5,&DAT_0067cb10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strpbrk((char *)pbVar5,&DAT_0067cb10)" (identifier "strpbrk") (argument_list "((char *)pbVar5,&DAT_0067cb10)" (( "(") (cast_expression "(char *)pbVar5" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar5")) (, ",") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) () ")"))))) (; ";")) (goto_statement "goto LAB_0048beab;" (goto "goto") (statement_identifier "LAB_0048beab") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0048bd6c:\n                FUN_004864a0(param_3,pbVar5,uVar8);" (statement_identifier "LAB_0048bd6c") (: ":") (expression_statement "FUN_004864a0(param_3,pbVar5,uVar8);" (call_expression "FUN_004864a0(param_3,pbVar5,uVar8)" (identifier "FUN_004864a0") (argument_list "(param_3,pbVar5,uVar8)" (( "(") (identifier "param_3") (, ",") (identifier "pbVar5") (, ",") (identifier "uVar8") () ")"))) (; ";"))) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" (identifier "pbVar5") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (} "}")))) (expression_statement "pbVar5 = pbVar5 + uVar9;" (assignment_expression "pbVar5 = pbVar5 + uVar9" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + uVar9" (identifier "pbVar5") (+ "+") (identifier "uVar9"))) (; ";")) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "*param_2 = (long)pbVar5;" (assignment_expression "*param_2 = (long)pbVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)pbVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar5"))) (; ";")) (goto_statement "goto LAB_0048beab;" (goto "goto") (statement_identifier "LAB_0048beab") (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" (identifier "iVar2") (= "=") (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" (identifier "FUN_004897d0") (argument_list "(param_1,param_2,param_3,0,1,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar2 == 0) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar5 = (byte *)*param_2;" (assignment_expression "pbVar5 = (byte *)*param_2" (identifier "pbVar5") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (labeled_statement "LAB_0048beab:\n          if (pbVar13 != pbVar5) {\n            return 0;\n          }" (statement_identifier "LAB_0048beab") (: ":") (if_statement "if (pbVar13 != pbVar5) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(pbVar13 != pbVar5)" (( "(") (binary_expression "pbVar13 != pbVar5" (identifier "pbVar13") (!= "!=") (identifier "pbVar5")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (expression_statement "bVar17 = *param_1;" (assignment_expression "bVar17 = *param_1" (identifier "bVar17") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*param_2 = (long)(pbVar13 + 1);" (assignment_expression "*param_2 = (long)(pbVar13 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(pbVar13 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pbVar13 + 1)" (( "(") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pcVar12 = ".";" (assignment_expression "pcVar12 = "."" (identifier "pcVar12") (= "=") (string_literal ""."" (" """) (string_content ".") (" """))) (; ";")) (if_statement "if ((bVar17 & 4) == 0) {\n            pcVar12 = "::";\n          }" (if "if") (parenthesized_expression "((bVar17 & 4) == 0)" (( "(") (binary_expression "(bVar17 & 4) == 0" (parenthesized_expression "(bVar17 & 4)" (( "(") (binary_expression "bVar17 & 4" (identifier "bVar17") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            pcVar12 = "::";\n          }" ({ "{") (expression_statement "pcVar12 = "::";" (assignment_expression "pcVar12 = "::"" (identifier "pcVar12") (= "=") (string_literal ""::"" (" """) (string_content "::") (" """))) (; ";")) (} "}"))) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" (identifier "FUN_00486550") (argument_list "(param_3,pcVar12)" (( "(") (identifier "param_3") (, ",") (identifier "pcVar12") () ")"))) (; ";")) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" (identifier "pcVar12") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "sVar6 = strlen(pcVar12);" (assignment_expression "sVar6 = strlen(pcVar12)" (identifier "sVar6") (= "=") (call_expression "strlen(pcVar12)" (identifier "strlen") (argument_list "(pcVar12)" (( "(") (identifier "pcVar12") () ")")))) (; ";")) (if_statement "if ((int)sVar6 != 0) {\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }" (if "if") (parenthesized_expression "((int)sVar6 != 0)" (( "(") (binary_expression "(int)sVar6 != 0" (cast_expression "(int)sVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar6")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);\n            pcVar12 = (char *)*param_2;\n          }" ({ "{") (expression_statement "FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);" (call_expression "FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff)" (identifier "FUN_004864a0") (argument_list "(param_3,pcVar12,sVar6 & 0xffffffff)" (( "(") (identifier "param_3") (, ",") (identifier "pcVar12") (, ",") (binary_expression "sVar6 & 0xffffffff" (identifier "sVar6") (& "&") (number_literal "0xffffffff")) () ")"))) (; ";")) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" (identifier "pcVar12") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (} "}"))) (expression_statement "*param_2 = (long)(pcVar12 + (int)sVar6);" (assignment_expression "*param_2 = (long)(pcVar12 + (int)sVar6)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(pcVar12 + (int)sVar6)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pcVar12 + (int)sVar6)" (( "(") (binary_expression "pcVar12 + (int)sVar6" (identifier "pcVar12") (+ "+") (cast_expression "(int)sVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar6"))) () ")")))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" (else "else") (compound_statement "{\n      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);\n      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }\n      if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1)" (identifier "pcVar12") (= "=") (call_expression "strchr(&DAT_0067cb10,(int)(char)bVar1)" (identifier "strchr") (argument_list "(&DAT_0067cb10,(int)(char)bVar1)" (( "(") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) (, ",") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) () ")")))) (; ";")) (if_statement "if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }" (if "if") (parenthesized_expression "((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f))" (( "(") (binary_expression "(pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)" (parenthesized_expression "(pcVar12 != (char *)0x0)" (( "(") (binary_expression "pcVar12 != (char *)0x0" (identifier "pcVar12") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pbVar5[2] == 0x5f)" (( "(") (binary_expression "pbVar5[2] == 0x5f" (subscript_expression "pbVar5[2]" (identifier "pbVar5") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x5f")) () ")"))) () ")")) (compound_statement "{\n        *param_2 = (long)(pbVar5 + 3);\n        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;\n        return 1;\n      }" ({ "{") (expression_statement "*param_2 = (long)(pbVar5 + 3);" (assignment_expression "*param_2 = (long)(pbVar5 + 3)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(pbVar5 + 3)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pbVar5 + 3)" (( "(") (binary_expression "pbVar5 + 3" (identifier "pbVar5") (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;" (assignment_expression "*(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x3c) + 1" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (bVar1 == 0x5f) {\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }\n      else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar1 == 0x5f)" (( "(") (binary_expression "bVar1 == 0x5f" (identifier "bVar1") (== "==") (number_literal "0x5f")) () ")")) (compound_statement "{\n        bVar14 = pbVar5[2] < 0x76;\n        bVar16 = pbVar5[2] == 0x76;\n        if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "bVar14 = pbVar5[2] < 0x76;" (assignment_expression "bVar14 = pbVar5[2] < 0x76" (identifier "bVar14") (= "=") (binary_expression "pbVar5[2] < 0x76" (subscript_expression "pbVar5[2]" (identifier "pbVar5") ([ "[") (number_literal "2") (] "]")) (< "<") (number_literal "0x76"))) (; ";")) (expression_statement "bVar16 = pbVar5[2] == 0x76;" (assignment_expression "bVar16 = pbVar5[2] == 0x76" (identifier "bVar16") (= "=") (binary_expression "pbVar5[2] == 0x76" (subscript_expression "pbVar5[2]" (identifier "pbVar5") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x76"))) (; ";")) (if_statement "if (bVar16) {\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (compound_statement "{\n          bVar14 = pbVar5[3] < 0x74;\n          bVar16 = pbVar5[3] == 0x74;\n          if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }\n        }" ({ "{") (expression_statement "bVar14 = pbVar5[3] < 0x74;" (assignment_expression "bVar14 = pbVar5[3] < 0x74" (identifier "bVar14") (= "=") (binary_expression "pbVar5[3] < 0x74" (subscript_expression "pbVar5[3]" (identifier "pbVar5") ([ "[") (number_literal "3") (] "]")) (< "<") (number_literal "0x74"))) (; ";")) (expression_statement "bVar16 = pbVar5[3] == 0x74;" (assignment_expression "bVar16 = pbVar5[3] == 0x74" (identifier "bVar16") (= "=") (binary_expression "pbVar5[3] == 0x74" (subscript_expression "pbVar5[3]" (identifier "pbVar5") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0x74"))) (; ";")) (if_statement "if (bVar16) {\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }" (if "if") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (compound_statement "{\n            bVar14 = pbVar5[4] < 0x5f;\n            bVar16 = pbVar5[4] == 0x5f;\n            if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }\n          }" ({ "{") (expression_statement "bVar14 = pbVar5[4] < 0x5f;" (assignment_expression "bVar14 = pbVar5[4] < 0x5f" (identifier "bVar14") (= "=") (binary_expression "pbVar5[4] < 0x5f" (subscript_expression "pbVar5[4]" (identifier "pbVar5") ([ "[") (number_literal "4") (] "]")) (< "<") (number_literal "0x5f"))) (; ";")) (expression_statement "bVar16 = pbVar5[4] == 0x5f;" (assignment_expression "bVar16 = pbVar5[4] == 0x5f" (identifier "bVar16") (= "=") (binary_expression "pbVar5[4] == 0x5f" (subscript_expression "pbVar5[4]" (identifier "pbVar5") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0x5f"))) (; ";")) (if_statement "if (bVar16) {\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }" (if "if") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (compound_statement "{\n              pbVar13 = pbVar5 + 5;\nLAB_0048bbeb:\n              *param_2 = (long)pbVar13;\n              iVar2 = 1;\nLAB_0048bbfb:\n              bVar17 = *pbVar13;\n              do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );\n            }" ({ "{") (expression_statement "pbVar13 = pbVar5 + 5;" (assignment_expression "pbVar13 = pbVar5 + 5" (identifier "pbVar13") (= "=") (binary_expression "pbVar5 + 5" (identifier "pbVar5") (+ "+") (number_literal "5"))) (; ";")) (labeled_statement "LAB_0048bbeb:\n              *param_2 = (long)pbVar13;" (statement_identifier "LAB_0048bbeb") (: ":") (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)pbVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar13"))) (; ";"))) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0048bbfb:\n              bVar17 = *pbVar13;" (statement_identifier "LAB_0048bbfb") (: ":") (expression_statement "bVar17 = *pbVar13;" (assignment_expression "bVar17 = *pbVar13" (identifier "bVar17") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";"))) (do_statement "do {\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              } while( true );" (do "do") (compound_statement "{\n                if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }\n                if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }\n                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;\n                if (pbVar13 != pbVar5) {\n                  return 0;\n                }\n                pcVar12 = "::";\n                if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }\n                FUN_00486550(param_3,pcVar12);\n                pbVar13 = (byte *)(*param_2 + 1);\n                *param_2 = (long)pbVar13;\n                bVar17 = *pbVar13;\n              }" ({ "{") (if_statement "if (bVar17 == 0) {\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }" (if "if") (parenthesized_expression "(bVar17 == 0)" (( "(") (binary_expression "bVar17 == 0" (identifier "bVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00486550(param_3," virtual table");\n                  return iVar2;\n                }" ({ "{") (expression_statement "FUN_00486550(param_3," virtual table");" (call_expression "FUN_00486550(param_3," virtual table")" (identifier "FUN_00486550") (argument_list "(param_3," virtual table")" (( "(") (identifier "param_3") (, ",") (string_literal "" virtual table"" (" """) (string_content " virtual table") (" """)) () ")"))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (if_statement "if (bVar17 == 0x51) {\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }\n                else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" (if "if") (parenthesized_expression "(bVar17 == 0x51)" (( "(") (binary_expression "bVar17 == 0x51" (identifier "bVar17") (== "==") (number_literal "0x51")) () ")")) (compound_statement "{\nLAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);\nLAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;\n                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  if (iVar2 == 0) {\n                    return 0;\n                  }\n                }" ({ "{") (labeled_statement "LAB_0048bf60:\n                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (statement_identifier "LAB_0048bf60") (: ":") (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" (identifier "iVar2") (= "=") (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" (identifier "FUN_00489ed0") (argument_list "(param_1,param_2,param_3,0,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";"))) (labeled_statement "LAB_0048bf3f:\n                  pbVar13 = (byte *)*param_2;" (statement_identifier "LAB_0048bf3f") (: ":") (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" (identifier "pbVar13") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";"))) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" (identifier "strpbrk") (argument_list "((char *)pbVar13,&DAT_0067cb10)" (( "(") (cast_expression "(char *)pbVar13" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar13")) (, ",") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) () ")"))))) (; ";")) (if_statement "if (iVar2 == 0) {\n                    return 0;\n                  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    return 0;\n                  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" (else "else") (compound_statement "{\n                  if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }\n                  if (bVar17 == 0x4b) goto LAB_0048bf60;\n                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                }" ({ "{") (if_statement "if (bVar17 == 0x74) {\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }" (if "if") (parenthesized_expression "(bVar17 == 0x74)" (( "(") (binary_expression "bVar17 == 0x74" (identifier "bVar17") (== "==") (number_literal "0x74")) () ")")) (compound_statement "{\n                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n                    goto LAB_0048bf3f;\n                  }" ({ "{") (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" (identifier "iVar2") (= "=") (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" (identifier "FUN_004897d0") (argument_list "(param_1,param_2,param_3,0,1,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (goto_statement "goto LAB_0048bf3f;" (goto "goto") (statement_identifier "LAB_0048bf3f") (; ";")) (} "}"))) (if_statement "if (bVar17 == 0x4b) goto LAB_0048bf60;" (if "if") (parenthesized_expression "(bVar17 == 0x4b)" (( "(") (binary_expression "bVar17 == 0x4b" (identifier "bVar17") (== "==") (number_literal "0x4b")) () ")")) (goto_statement "goto LAB_0048bf60;" (goto "goto") (statement_identifier "LAB_0048bf60") (; ";"))) (if_statement "if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }\n                  else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" (if "if") (parenthesized_expression "(((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0)" (( "(") (binary_expression "((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0" (parenthesized_expression "((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4)" (( "(") (binary_expression "(&DAT_0058aa80)[(ulong)bVar17 * 2] & 4" (subscript_expression "(&DAT_0058aa80)[(ulong)bVar17 * 2]" (parenthesized_expression "(&DAT_0058aa80)" (( "(") (pointer_expression "&DAT_0058aa80" (& "&") (identifier "DAT_0058aa80")) () ")")) ([ "[") (binary_expression "(ulong)bVar17 * 2" (cast_expression "(ulong)bVar17" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar17")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);\n                    iVar4 = (int)sVar6;\nLAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }\n                    pbVar13 = pbVar13 + iVar4;\n                    *param_2 = (long)pbVar13;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" ({ "{") (expression_statement "sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10)" (identifier "sVar6") (= "=") (call_expression "strcspn((char *)pbVar13,&DAT_0067cb10)" (identifier "strcspn") (argument_list "((char *)pbVar13,&DAT_0067cb10)" (( "(") (cast_expression "(char *)pbVar13" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar13")) (, ",") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) () ")")))) (; ";")) (expression_statement "iVar4 = (int)sVar6;" (assignment_expression "iVar4 = (int)sVar6" (identifier "iVar4") (= "=") (cast_expression "(int)sVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar6"))) (; ";")) (labeled_statement "LAB_0048bc3f:\n                    if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" (statement_identifier "LAB_0048bc3f") (: ":") (if_statement "if (iVar4 != 0) {\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      FUN_004864a0(param_3,pbVar13,iVar4);\n                      pbVar13 = (byte *)*param_2;\n                    }" ({ "{") (expression_statement "FUN_004864a0(param_3,pbVar13,iVar4);" (call_expression "FUN_004864a0(param_3,pbVar13,iVar4)" (identifier "FUN_004864a0") (argument_list "(param_3,pbVar13,iVar4)" (( "(") (identifier "param_3") (, ",") (identifier "pbVar13") (, ",") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" (identifier "pbVar13") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (} "}")))) (expression_statement "pbVar13 = pbVar13 + iVar4;" (assignment_expression "pbVar13 = pbVar13 + iVar4" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + iVar4" (identifier "pbVar13") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)pbVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar13"))) (; ";")) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" (identifier "strpbrk") (argument_list "((char *)pbVar13,&DAT_0067cb10)" (( "(") (cast_expression "(char *)pbVar13" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar13")) (, ",") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" (else "else") (compound_statement "{\n                    iVar4 = FUN_00486160(param_2);\n                    pbVar13 = (byte *)*param_2;\n                    sVar6 = strlen((char *)pbVar13);\n                    if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }\n                    iVar2 = 1;\n                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);\n                  }" ({ "{") (expression_statement "iVar4 = FUN_00486160(param_2);" (assignment_expression "iVar4 = FUN_00486160(param_2)" (identifier "iVar4") (= "=") (call_expression "FUN_00486160(param_2)" (identifier "FUN_00486160") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" (identifier "pbVar13") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "sVar6 = strlen((char *)pbVar13);" (assignment_expression "sVar6 = strlen((char *)pbVar13)" (identifier "sVar6") (= "=") (call_expression "strlen((char *)pbVar13)" (identifier "strlen") (argument_list "((char *)pbVar13)" (( "(") (cast_expression "(char *)pbVar13" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar13")) () ")")))) (; ";")) (if_statement "if (iVar4 <= (int)sVar6) {\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }" (if "if") (parenthesized_expression "(iVar4 <= (int)sVar6)" (( "(") (binary_expression "iVar4 <= (int)sVar6" (identifier "iVar4") (<= "<=") (cast_expression "(int)sVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar6"))) () ")")) (compound_statement "{\n                      if (iVar4 == -1) {\n                        return 0;\n                      }\n                      goto LAB_0048bc3f;\n                    }" ({ "{") (if_statement "if (iVar4 == -1) {\n                        return 0;\n                      }" (if "if") (parenthesized_expression "(iVar4 == -1)" (( "(") (binary_expression "iVar4 == -1" (identifier "iVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                        return 0;\n                      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_0048bc3f;" (goto "goto") (statement_identifier "LAB_0048bc3f") (; ";")) (} "}"))) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);" (assignment_expression "pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)strpbrk((char *)pbVar13,&DAT_0067cb10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strpbrk((char *)pbVar13,&DAT_0067cb10)" (identifier "strpbrk") (argument_list "((char *)pbVar13,&DAT_0067cb10)" (( "(") (cast_expression "(char *)pbVar13" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar13")) (, ",") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) () ")"))))) (; ";")) (} "}")))) (} "}")))) (if_statement "if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;" (if "if") (parenthesized_expression "(pbVar5 == (byte *)0x0)" (( "(") (binary_expression "pbVar5 == (byte *)0x0" (identifier "pbVar5") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0048bf80;" (goto "goto") (statement_identifier "LAB_0048bf80") (; ";"))) (if_statement "if (pbVar13 != pbVar5) {\n                  return 0;\n                }" (if "if") (parenthesized_expression "(pbVar13 != pbVar5)" (( "(") (binary_expression "pbVar13 != pbVar5" (identifier "pbVar13") (!= "!=") (identifier "pbVar5")) () ")")) (compound_statement "{\n                  return 0;\n                }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pcVar12 = "::";" (assignment_expression "pcVar12 = "::"" (identifier "pcVar12") (= "=") (string_literal ""::"" (" """) (string_content "::") (" """))) (; ";")) (if_statement "if ((*param_1 & 4) != 0) {\n                  pcVar12 = ".";\n                }" (if "if") (parenthesized_expression "((*param_1 & 4) != 0)" (( "(") (binary_expression "(*param_1 & 4) != 0" (parenthesized_expression "(*param_1 & 4)" (( "(") (binary_expression "*param_1 & 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  pcVar12 = ".";\n                }" ({ "{") (expression_statement "pcVar12 = ".";" (assignment_expression "pcVar12 = "."" (identifier "pcVar12") (= "=") (string_literal ""."" (" """) (string_content ".") (" """))) (; ";")) (} "}"))) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" (identifier "FUN_00486550") (argument_list "(param_3,pcVar12)" (( "(") (identifier "param_3") (, ",") (identifier "pcVar12") () ")"))) (; ";")) (expression_statement "pbVar13 = (byte *)(*param_2 + 1);" (assignment_expression "pbVar13 = (byte *)(*param_2 + 1)" (identifier "pbVar13") (= "=") (cast_expression "(byte *)(*param_2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 1)" (( "(") (binary_expression "*param_2 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*param_2 = (long)pbVar13;" (assignment_expression "*param_2 = (long)pbVar13" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)pbVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar13"))) (; ";")) (expression_statement "bVar17 = *pbVar13;" (assignment_expression "bVar17 = *pbVar13" (identifier "bVar17") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" (else "else") (compound_statement "{\n        if (bVar1 != 0x76) goto LAB_0048bcb8;\n        bVar14 = pbVar5[2] < 0x74;\n        bVar16 = pbVar5[2] == 0x74;\n        if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }\n      }" ({ "{") (if_statement "if (bVar1 != 0x76) goto LAB_0048bcb8;" (if "if") (parenthesized_expression "(bVar1 != 0x76)" (( "(") (binary_expression "bVar1 != 0x76" (identifier "bVar1") (!= "!=") (number_literal "0x76")) () ")")) (goto_statement "goto LAB_0048bcb8;" (goto "goto") (statement_identifier "LAB_0048bcb8") (; ";"))) (expression_statement "bVar14 = pbVar5[2] < 0x74;" (assignment_expression "bVar14 = pbVar5[2] < 0x74" (identifier "bVar14") (= "=") (binary_expression "pbVar5[2] < 0x74" (subscript_expression "pbVar5[2]" (identifier "pbVar5") ([ "[") (number_literal "2") (] "]")) (< "<") (number_literal "0x74"))) (; ";")) (expression_statement "bVar16 = pbVar5[2] == 0x74;" (assignment_expression "bVar16 = pbVar5[2] == 0x74" (identifier "bVar16") (= "=") (binary_expression "pbVar5[2] == 0x74" (subscript_expression "pbVar5[2]" (identifier "pbVar5") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x74"))) (; ";")) (if_statement "if (bVar16) {\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }" (if "if") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (compound_statement "{\n          bVar14 = false;\n          bVar16 = pbVar5[3] == 0;\n          if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }\n        }" ({ "{") (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar16 = pbVar5[3] == 0;" (assignment_expression "bVar16 = pbVar5[3] == 0" (identifier "bVar16") (= "=") (binary_expression "pbVar5[3] == 0" (subscript_expression "pbVar5[3]" (identifier "pbVar5") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar16) {\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }" (if "if") (parenthesized_expression "(!bVar16)" (( "(") (unary_expression "!bVar16" (! "!") (identifier "bVar16")) () ")")) (compound_statement "{\n            pbVar13 = pbVar5 + 4;\n            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);\n            bVar14 = false;\n            bVar16 = pcVar12 == (char *)0x0;\n            if (!bVar16) goto LAB_0048bbeb;\n          }" ({ "{") (expression_statement "pbVar13 = pbVar5 + 4;" (assignment_expression "pbVar13 = pbVar5 + 4" (identifier "pbVar13") (= "=") (binary_expression "pbVar5 + 4" (identifier "pbVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);" (assignment_expression "pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3])" (identifier "pcVar12") (= "=") (call_expression "strchr(&DAT_0067cb10,(int)(char)pbVar5[3])" (identifier "strchr") (argument_list "(&DAT_0067cb10,(int)(char)pbVar5[3])" (( "(") (pointer_expression "&DAT_0067cb10" (& "&") (identifier "DAT_0067cb10")) (, ",") (cast_expression "(int)(char)pbVar5[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar5[3]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar5[3]" (identifier "pbVar5") ([ "[") (number_literal "3") (] "]")))) () ")")))) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar16 = pcVar12 == (char *)0x0;" (assignment_expression "bVar16 = pcVar12 == (char *)0x0" (identifier "bVar16") (= "=") (binary_expression "pcVar12 == (char *)0x0" (identifier "pcVar12") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!bVar16) goto LAB_0048bbeb;" (if "if") (parenthesized_expression "(!bVar16)" (( "(") (unary_expression "!bVar16" (! "!") (identifier "bVar16")) () ")")) (goto_statement "goto LAB_0048bbeb;" (goto "goto") (statement_identifier "LAB_0048bbeb") (; ";"))) (} "}"))) (} "}"))) (} "}")))) (} "}")))) (} "}"))) (expression_statement "lVar7 = 8;" (assignment_expression "lVar7 = 8" (identifier "lVar7") (= "=") (number_literal "8")) (; ";")) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" (identifier "pbVar13") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "pbVar10 = (byte *)"__thunk_";" (assignment_expression "pbVar10 = (byte *)"__thunk_"" (identifier "pbVar10") (= "=") (cast_expression "(byte *)"__thunk_"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""__thunk_"" (" """) (string_content "__thunk_") (" """)))) (; ";")) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar16);" (do "do") (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar14 = *pbVar13 < *pbVar10;\n    bVar16 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  }" ({ "{") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar13 < *pbVar10;" (assignment_expression "bVar14 = *pbVar13 < *pbVar10" (identifier "bVar14") (= "=") (binary_expression "*pbVar13 < *pbVar10" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar16 = *pbVar13 == *pbVar10;" (assignment_expression "bVar16 = *pbVar13 == *pbVar10" (identifier "bVar16") (= "=") (binary_expression "*pbVar13 == *pbVar10" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar17 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar17")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar17")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar14 = (!bVar14 && !bVar16) == bVar14;" (assignment_expression "bVar14 = (!bVar14 && !bVar16) == bVar14" (identifier "bVar14") (= "=") (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" (( "(") (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar16" (! "!") (identifier "bVar16"))) () ")")) (== "==") (identifier "bVar14"))) (; ";")) (if_statement "if (bVar14) {\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }" (if "if") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (compound_statement "{\n    *param_2 = (long)(pbVar5 + 8);\n    iVar2 = FUN_00486160(param_2);\n    if (iVar2 == -1) {\n      return 0;\n    }\n    if (*(char *)*param_2 != '_') {\n      return 0;\n    }\n    *param_2 = (long)((char *)*param_2 + 1);\n    pcVar12 = (char *)FUN_0048c0f0(param_1);\n    if (pcVar12 == (char *)0x0) {\n      return 0;\n    }\n    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);\n    if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }\n    if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }\n    free(pcVar12);\n    pcVar12 = (char *)*param_2;\n    sVar6 = strlen(pcVar12);\n    *param_2 = (long)(pcVar12 + (int)sVar6);\n    return 1;\n  }" ({ "{") (expression_statement "*param_2 = (long)(pbVar5 + 8);" (assignment_expression "*param_2 = (long)(pbVar5 + 8)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(pbVar5 + 8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pbVar5 + 8)" (( "(") (binary_expression "pbVar5 + 8" (identifier "pbVar5") (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "iVar2 = FUN_00486160(param_2);" (assignment_expression "iVar2 = FUN_00486160(param_2)" (identifier "iVar2") (= "=") (call_expression "FUN_00486160(param_2)" (identifier "FUN_00486160") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar2 == -1) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(char *)*param_2 != '_') {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*(char *)*param_2 != '_')" (( "(") (binary_expression "*(char *)*param_2 != '_'" (pointer_expression "*(char *)*param_2" (* "*") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (!= "!=") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*param_2 = (long)((char *)*param_2 + 1);" (assignment_expression "*param_2 = (long)((char *)*param_2 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)((char *)*param_2 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "((char *)*param_2 + 1)" (( "(") (binary_expression "(char *)*param_2 + 1" (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pcVar12 = (char *)FUN_0048c0f0(param_1);" (assignment_expression "pcVar12 = (char *)FUN_0048c0f0(param_1)" (identifier "pcVar12") (= "=") (cast_expression "(char *)FUN_0048c0f0(param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0048c0f0(param_1)" (identifier "FUN_0048c0f0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (if_statement "if (pcVar12 == (char *)0x0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(pcVar12 == (char *)0x0)" (( "(") (binary_expression "pcVar12 == (char *)0x0" (identifier "pcVar12") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);" (call_expression "sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2)" (identifier "sprintf") (argument_list "(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2)" (( "(") (identifier "local_78") (, ",") (string_literal ""virtual function thunk (delta:%d) for "" (" """) (string_content "virtual function thunk (delta:%d) for ") (" """)) (, ",") (binary_expression "(ulong)(uint)-iVar2" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (- "-") (identifier "iVar2")) () ")"))) (; ";")) (if_statement "if (local_78[0] != '\0') {\n      FUN_00486550(param_3,local_78);\n    }" (if "if") (parenthesized_expression "(local_78[0] != '\0')" (( "(") (binary_expression "local_78[0] != '\0'" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00486550(param_3,local_78);\n    }" ({ "{") (expression_statement "FUN_00486550(param_3,local_78);" (call_expression "FUN_00486550(param_3,local_78)" (identifier "FUN_00486550") (argument_list "(param_3,local_78)" (( "(") (identifier "param_3") (, ",") (identifier "local_78") () ")"))) (; ";")) (} "}"))) (if_statement "if (*pcVar12 != '\0') {\n      FUN_00486550(param_3,pcVar12);\n    }" (if "if") (parenthesized_expression "(*pcVar12 != '\0')" (( "(") (binary_expression "*pcVar12 != '\0'" (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00486550(param_3,pcVar12);\n    }" ({ "{") (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" (identifier "FUN_00486550") (argument_list "(param_3,pcVar12)" (( "(") (identifier "param_3") (, ",") (identifier "pcVar12") () ")"))) (; ";")) (} "}"))) (expression_statement "free(pcVar12);" (call_expression "free(pcVar12)" (identifier "free") (argument_list "(pcVar12)" (( "(") (identifier "pcVar12") () ")"))) (; ";")) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" (identifier "pcVar12") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "sVar6 = strlen(pcVar12);" (assignment_expression "sVar6 = strlen(pcVar12)" (identifier "sVar6") (= "=") (call_expression "strlen(pcVar12)" (identifier "strlen") (argument_list "(pcVar12)" (( "(") (identifier "pcVar12") () ")")))) (; ";")) (expression_statement "*param_2 = (long)(pcVar12 + (int)sVar6);" (assignment_expression "*param_2 = (long)(pcVar12 + (int)sVar6)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(pcVar12 + (int)sVar6)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pcVar12 + (int)sVar6)" (( "(") (binary_expression "pcVar12 + (int)sVar6" (identifier "pcVar12") (+ "+") (cast_expression "(int)sVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar6"))) () ")")))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "lVar7 = 3;" (assignment_expression "lVar7 = 3" (identifier "lVar7") (= "=") (number_literal "3")) (; ";")) (expression_statement "pbVar13 = pbVar5;" (assignment_expression "pbVar13 = pbVar5" (identifier "pbVar13") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "pbVar10 = &DAT_00588187;" (assignment_expression "pbVar10 = &DAT_00588187" (identifier "pbVar10") (= "=") (pointer_expression "&DAT_00588187" (& "&") (identifier "DAT_00588187"))) (; ";")) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  } while (bVar14);" (do "do") (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar15 = *pbVar13 < *pbVar10;\n    bVar14 = *pbVar13 == *pbVar10;\n    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;\n  }" ({ "{") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar13 < *pbVar10;" (assignment_expression "bVar15 = *pbVar13 < *pbVar10" (identifier "bVar15") (= "=") (binary_expression "*pbVar13 < *pbVar10" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar14 = *pbVar13 == *pbVar10;" (assignment_expression "bVar14 = *pbVar13 == *pbVar10" (identifier "bVar14") (= "=") (binary_expression "*pbVar13 == *pbVar10" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar17 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar17")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar17 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar17 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar17")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (; ";")) (if_statement "if ((!bVar15 && !bVar14) != bVar15) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((!bVar15 && !bVar14) != bVar15)" (( "(") (binary_expression "(!bVar15 && !bVar14) != bVar15" (parenthesized_expression "(!bVar15 && !bVar14)" (( "(") (binary_expression "!bVar15 && !bVar14" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar14" (! "!") (identifier "bVar14"))) () ")")) (!= "!=") (identifier "bVar15")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar17 = pbVar5[3];" (assignment_expression "bVar17 = pbVar5[3]" (identifier "bVar17") (= "=") (subscript_expression "pbVar5[3]" (identifier "pbVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((bVar17 != 0x69) && (bVar17 != 0x66)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((bVar17 != 0x69) && (bVar17 != 0x66))" (( "(") (binary_expression "(bVar17 != 0x69) && (bVar17 != 0x66)" (parenthesized_expression "(bVar17 != 0x69)" (( "(") (binary_expression "bVar17 != 0x69" (identifier "bVar17") (!= "!=") (number_literal "0x69")) () ")")) (&& "&&") (parenthesized_expression "(bVar17 != 0x66)" (( "(") (binary_expression "bVar17 != 0x66" (identifier "bVar17") (!= "!=") (number_literal "0x66")) () ")"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pcVar12 = " type_info node";" (assignment_expression "pcVar12 = " type_info node"" (identifier "pcVar12") (= "=") (string_literal "" type_info node"" (" """) (string_content " type_info node") (" """))) (; ";")) (if_statement "if (bVar17 != 0x69) {\n    pcVar12 = " type_info function";\n  }" (if "if") (parenthesized_expression "(bVar17 != 0x69)" (( "(") (binary_expression "bVar17 != 0x69" (identifier "bVar17") (!= "!=") (number_literal "0x69")) () ")")) (compound_statement "{\n    pcVar12 = " type_info function";\n  }" ({ "{") (expression_statement "pcVar12 = " type_info function";" (assignment_expression "pcVar12 = " type_info function"" (identifier "pcVar12") (= "=") (string_literal "" type_info function"" (" """) (string_content " type_info function") (" """))) (; ";")) (} "}"))) (expression_statement "*param_2 = (long)(pbVar5 + 4);" (assignment_expression "*param_2 = (long)(pbVar5 + 4)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(pbVar5 + 4)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(pbVar5 + 4)" (( "(") (binary_expression "pbVar5 + 4" (identifier "pbVar5") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "bVar17 = pbVar5[4];" (assignment_expression "bVar17 = pbVar5[4]" (identifier "bVar17") (= "=") (subscript_expression "pbVar5[4]" (identifier "pbVar5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (bVar17 != 0x51) {\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }" (if "if") (parenthesized_expression "(bVar17 != 0x51)" (( "(") (binary_expression "bVar17 != 0x51" (identifier "bVar17") (!= "!=") (number_literal "0x51")) () ")")) (compound_statement "{\n    if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }\n    if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }\n  }" ({ "{") (if_statement "if (bVar17 == 0x74) {\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }" (if "if") (parenthesized_expression "(bVar17 == 0x74)" (( "(") (binary_expression "bVar17 == 0x74" (identifier "bVar17") (== "==") (number_literal "0x74")) () ")")) (compound_statement "{\n      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);\n      goto LAB_0048bb64;\n    }" ({ "{") (expression_statement "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);" (assignment_expression "iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1)" (identifier "iVar2") (= "=") (call_expression "FUN_004897d0(param_1,param_2,param_3,0,1,1)" (identifier "FUN_004897d0") (argument_list "(param_1,param_2,param_3,0,1,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (goto_statement "goto LAB_0048bb64;" (goto "goto") (statement_identifier "LAB_0048bb64") (; ";")) (} "}"))) (if_statement "if (bVar17 != 0x4b) {\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }" (if "if") (parenthesized_expression "(bVar17 != 0x4b)" (( "(") (binary_expression "bVar17 != 0x4b" (identifier "bVar17") (!= "!=") (number_literal "0x4b")) () ")")) (compound_statement "{\n      iVar2 = FUN_00487a30(param_1,param_2,param_3);\n      goto LAB_0048bb64;\n    }" ({ "{") (expression_statement "iVar2 = FUN_00487a30(param_1,param_2,param_3);" (assignment_expression "iVar2 = FUN_00487a30(param_1,param_2,param_3)" (identifier "iVar2") (= "=") (call_expression "FUN_00487a30(param_1,param_2,param_3)" (identifier "FUN_00487a30") (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (goto_statement "goto LAB_0048bb64;" (goto "goto") (statement_identifier "LAB_0048bb64") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);" (assignment_expression "iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1)" (identifier "iVar2") (= "=") (call_expression "FUN_00489ed0(param_1,param_2,param_3,0,1)" (identifier "FUN_00489ed0") (argument_list "(param_1,param_2,param_3,0,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (labeled_statement "LAB_0048bb64:\n  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" (statement_identifier "LAB_0048bb64") (: ":") (if_statement "if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" (if "if") (parenthesized_expression "((iVar2 != 0) && (*(char *)*param_2 == '\0'))" (( "(") (binary_expression "(iVar2 != 0) && (*(char *)*param_2 == '\0')" (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)*param_2 == '\0')" (( "(") (binary_expression "*(char *)*param_2 == '\0'" (pointer_expression "*(char *)*param_2" (* "*") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    if (*pcVar12 == '\0') {\n      return iVar2;\n    }\n    FUN_00486550(param_3,pcVar12);\n    return iVar2;\n  }" ({ "{") (if_statement "if (*pcVar12 == '\0') {\n      return iVar2;\n    }" (if "if") (parenthesized_expression "(*pcVar12 == '\0')" (( "(") (binary_expression "*pcVar12 == '\0'" (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return iVar2;\n    }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "FUN_00486550(param_3,pcVar12);" (call_expression "FUN_00486550(param_3,pcVar12)" (identifier "FUN_00486550") (argument_list "(param_3,pcVar12)" (( "(") (identifier "param_3") (, ",") (identifier "pcVar12") () ")"))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (labeled_statement "LAB_0048bf80:\n  pbVar13 = (byte *)*param_2;" (statement_identifier "LAB_0048bf80") (: ":") (expression_statement "pbVar13 = (byte *)*param_2;" (assignment_expression "pbVar13 = (byte *)*param_2" (identifier "pbVar13") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";"))) (goto_statement "goto LAB_0048bbfb;" (goto "goto") (statement_identifier "LAB_0048bbfb") (; ";")) (} "}")))

int function_1(type_1 *work,char **mangled,type_2 *declp)

{
  type_3 var_1;
  int var_19;
  type_4 var_11;
  int var_20;
  type_3 *var_6;
  size_t sVar5;
  long var_10;
  long var_12;
  type_3 *var_13;
  type_3 *var_14;
  char *var_3;
  type_3 *var_5;
  bool var_15;
  bool var_26;
  bool bVar14;
  type_3 var_21;
  char buf [50];
  
  var_21 = 0;
  var_6 = (type_3 *)*mangled;
  var_15 = *var_6 < 0x5f;
  bVar14 = *var_6 == 0x5f;
  if (bVar14) {
    var_1 = var_6[1];
    if (var_1 == 0) {
LAB_0048bcb8:
      var_3 = var_2("0123456789Qt",(int)(char)var_1);
      var_15 = false;
      bVar14 = var_3 == (char *)0x0;
      if (!bVar14) {
        var_5 = (type_3 *)var_4((char *)var_6,cplus_markers);
        var_15 = false;
        bVar14 = var_5 == (type_3 *)0x0;
        if (!bVar14) {
          *mangled = (char *)(var_6 + 1);
          var_1 = var_6[1];
          if (var_1 == 0x51) {
LAB_0048bf00:
            var_19 = var_7(work,mangled,declp,0,1);
          }
          else {
            if (var_1 != 0x74) {
              if (var_1 == 0x4b) goto LAB_0048bf00;
              var_11 = var_8(mangled);
              if ((int)var_11 < 0) {
                return 0;
              }
              var_6 = (type_3 *)*mangled;
              sVar5 = var_9((char *)var_6);
              var_10 = (long)(int)var_11;
              if ((long)sVar5 < var_10) {
                return 0;
              }
              var_15 = var_11 < 10;
              bVar14 = var_11 == 10;
              if ((int)var_11 < 0xb) {
                if (var_11 != 0) goto LAB_0048bd6c;
              }
              else {
                var_12 = 8;
                var_13 = var_6;
                var_14 = (type_3 *)"_GLOBAL_";
                do {
                  if (var_12 == 0) break;
                  var_12 = var_12 + -1;
                  var_15 = *var_13 < *var_14;
                  bVar14 = *var_13 == *var_14;
                  var_13 = var_13 + (type_5)var_21 * -2 + 1;
                  var_14 = var_14 + (type_5)var_21 * -2 + 1;
                } while (bVar14);
                if (((((!var_15 && !bVar14) == var_15) && (var_6[9] == 0x4e)) &&
                    (var_6[8] == var_6[10])) &&
                   (var_3 = var_2(cplus_markers,(int)(char)var_6[8]), var_3 != (char *)0x0)) {
                  var_19 = 1;
                  var_16(declp,"{anonymous}");
                  var_6 = (type_3 *)(*mangled + var_10);
                  *mangled = (char *)var_6;
                  var_5 = (type_3 *)var_4((char *)var_6,cplus_markers);
                  goto LAB_0048beab;
                }
LAB_0048bd6c:
                var_17(declp,(char *)var_6,var_11);
                var_6 = (type_3 *)*mangled;
              }
              var_6 = var_6 + var_10;
              var_19 = 1;
              *mangled = (char *)var_6;
              goto LAB_0048beab;
            }
            var_19 = var_18(work,mangled,declp,(type_2 *)0x0,1,1);
          }
          if (var_19 == 0) {
            return 0;
          }
          var_6 = (type_3 *)*mangled;
LAB_0048beab:
          if (var_5 != var_6) {
            return 0;
          }
          var_20 = work->options;
          *mangled = (char *)(var_5 + 1);
          var_3 = ".";
          if ((var_20 & 4) == 0) {
            var_3 = "::";
          }
          var_16(declp,var_3);
          var_3 = *mangled;
          sVar5 = var_9(var_3);
          var_20 = (int)sVar5;
          if (var_20 != 0) {
            var_17(declp,var_3,var_20);
            var_3 = *mangled;
          }
          *mangled = var_3 + var_20;
          return var_19;
        }
      }
    }
    else {
      var_3 = var_2(cplus_markers,(int)(char)var_1);
      if ((var_3 != (char *)0x0) && (var_6[2] == 0x5f)) {
        *mangled = (char *)(var_6 + 3);
        work->destructor = work->destructor + 1;
        return 1;
      }
      if (var_1 == 0x5f) {
        var_15 = var_6[2] < 0x76;
        bVar14 = var_6[2] == 0x76;
        if (bVar14) {
          var_15 = var_6[3] < 0x74;
          bVar14 = var_6[3] == 0x74;
          if (bVar14) {
            var_15 = var_6[4] < 0x5f;
            bVar14 = var_6[4] == 0x5f;
            if (bVar14) {
              var_5 = var_6 + 5;
LAB_0048bbeb:
              *mangled = (char *)var_5;
              var_19 = 1;
LAB_0048bbfb:
              var_21 = *var_5;
              do {
                if (var_21 == 0) {
                  var_16(declp," virtual table");
                  return var_19;
                }
                if (var_21 == 0x51) {
LAB_0048bf60:
                  var_19 = var_7(work,mangled,declp,0,1);
LAB_0048bf3f:
                  var_5 = (type_3 *)*mangled;
                  var_6 = (type_3 *)var_4((char *)var_5,cplus_markers);
                  if (var_19 == 0) {
                    return 0;
                  }
                }
                else {
                  if (var_21 == 0x74) {
                    var_19 = var_18(work,mangled,declp,(type_2 *)0x0,1,1);
                    goto LAB_0048bf3f;
                  }
                  if (var_21 == 0x4b) goto LAB_0048bf60;
                  if ((_sch_istable[var_21] & 4) == 0) {
                    sVar5 = var_22((char *)var_5,cplus_markers);
                    var_20 = (int)sVar5;
LAB_0048bc3f:
                    if (var_20 != 0) {
                      var_17(declp,(char *)var_5,var_20);
                      var_5 = (type_3 *)*mangled;
                    }
                    var_5 = var_5 + var_20;
                    *mangled = (char *)var_5;
                    var_6 = (type_3 *)var_4((char *)var_5,cplus_markers);
                  }
                  else {
                    var_20 = var_8(mangled);
                    var_5 = (type_3 *)*mangled;
                    sVar5 = var_9((char *)var_5);
                    if (var_20 <= (int)sVar5) {
                      if (var_20 == -1) {
                        return 0;
                      }
                      goto LAB_0048bc3f;
                    }
                    var_19 = 1;
                    var_6 = (type_3 *)var_4((char *)var_5,cplus_markers);
                  }
                }
                if (var_6 == (type_3 *)0x0) goto LAB_0048bf80;
                if (var_5 != var_6) {
                  return 0;
                }
                var_3 = "::";
                if ((work->options & 4) != 0) {
                  var_3 = ".";
                }
                var_16(declp,var_3);
                var_5 = (type_3 *)(*mangled + 1);
                *mangled = (char *)var_5;
                var_21 = *var_5;
              } while( true );
            }
          }
        }
      }
      else {
        if (var_1 != 0x76) goto LAB_0048bcb8;
        var_15 = var_6[2] < 0x74;
        bVar14 = var_6[2] == 0x74;
        if (bVar14) {
          var_15 = false;
          bVar14 = var_6[3] == 0;
          if (!bVar14) {
            var_5 = var_6 + 4;
            var_3 = var_2(cplus_markers,(int)(char)var_6[3]);
            var_15 = false;
            bVar14 = var_3 == (char *)0x0;
            if (!bVar14) goto LAB_0048bbeb;
          }
        }
      }
    }
  }
  var_10 = 8;
  var_5 = var_6;
  var_13 = (type_3 *)"__thunk_";
  do {
    if (var_10 == 0) break;
    var_10 = var_10 + -1;
    var_15 = *var_5 < *var_13;
    bVar14 = *var_5 == *var_13;
    var_5 = var_5 + (type_5)var_21 * -2 + 1;
    var_13 = var_13 + (type_5)var_21 * -2 + 1;
  } while (bVar14);
  var_26 = false;
  var_15 = (!var_15 && !bVar14) == var_15;
  if (var_15) {
    *mangled = (char *)(var_6 + 8);
    var_19 = var_8(mangled);
    if (var_19 == -1) {
      return 0;
    }
    if (**mangled != '_') {
      return 0;
    }
    var_3 = *mangled + 1;
    *mangled = var_3;
    var_3 = var_23(work,var_3);
    if (var_3 == (char *)0x0) {
      return 0;
    }
    var_24(buf,"virtual function thunk (delta:%d) for ",(type_5)(type_4)-var_19);
    if (buf[0] != '\0') {
      var_16(declp,buf);
    }
    if (*var_3 != '\0') {
      var_16(declp,var_3);
    }
    var_25(var_3);
    var_3 = *mangled;
    sVar5 = var_9(var_3);
    *mangled = var_3 + (int)sVar5;
    return 1;
  }
  var_10 = 3;
  var_5 = var_6;
  var_13 = &DAT_00588187;
  do {
    if (var_10 == 0) break;
    var_10 = var_10 + -1;
    var_26 = *var_5 < *var_13;
    var_15 = *var_5 == *var_13;
    var_5 = var_5 + (type_5)var_21 * -2 + 1;
    var_13 = var_13 + (type_5)var_21 * -2 + 1;
  } while (var_15);
  if ((!var_26 && !var_15) != var_26) {
    return 0;
  }
  var_21 = var_6[3];
  if ((var_21 != 0x69) && (var_21 != 0x66)) {
    return 0;
  }
  var_3 = " type_info node";
  if (var_21 != 0x69) {
    var_3 = " type_info function";
  }
  *mangled = (char *)(var_6 + 4);
  var_21 = var_6[4];
  if (var_21 != 0x51) {
    if (var_21 == 0x74) {
      var_19 = var_18(work,mangled,declp,(type_2 *)0x0,1,1);
      goto LAB_0048bb64;
    }
    if (var_21 != 0x4b) {
      var_19 = var_27(work,mangled,declp);
      goto LAB_0048bb64;
    }
  }
  var_19 = var_7(work,mangled,declp,0,1);
LAB_0048bb64:
  if ((var_19 != 0) && (**mangled == '\0')) {
    if (*var_3 == '\0') {
      return var_19;
    }
    var_16(declp,var_3);
    return var_19;
  }
  return 0;
LAB_0048bf80:
  var_5 = (type_3 *)*mangled;
  goto LAB_0048bbfb;
}


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

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

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  byte *pbVar5;
  size_t sVar6;
  long lVar7;
  ulong uVar8;
  ulong uVar9;
  byte *pbVar10;
  byte *pbVar11;
  char *pcVar12;
  byte *pbVar13;
  bool bVar14;
  bool bVar15;
  bool bVar16;
  byte bVar17;
  char local_78 [72];
  
  bVar17 = 0;
  pbVar5 = (byte *)*param_2;
  bVar14 = *pbVar5 < 0x5f;
  bVar16 = *pbVar5 == 0x5f;
  if (bVar16) {
    bVar1 = pbVar5[1];
    if (bVar1 == 0) {
LAB_0048bcb8:
      pcVar12 = strchr("0123456789Qt",(int)(char)bVar1);
      bVar14 = false;
      bVar16 = pcVar12 == (char *)0x0;
      if (!bVar16) {
        pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);
        bVar14 = false;
        bVar16 = pbVar13 == (byte *)0x0;
        if (!bVar16) {
          *param_2 = (long)(pbVar5 + 1);
          bVar1 = pbVar5[1];
          if (bVar1 == 0x51) {
LAB_0048bf00:
            iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);
          }
          else {
            if (bVar1 != 0x74) {
              if (bVar1 == 0x4b) goto LAB_0048bf00;
              uVar3 = FUN_00486160(param_2);
              if ((int)uVar3 < 0) {
                return 0;
              }
              pbVar5 = (byte *)*param_2;
              sVar6 = strlen((char *)pbVar5);
              uVar9 = (ulong)(int)uVar3;
              if ((long)sVar6 < (long)uVar9) {
                return 0;
              }
              bVar14 = uVar3 < 10;
              bVar16 = uVar3 == 10;
              uVar8 = uVar9;
              if ((int)uVar3 < 0xb) {
                if (uVar3 != 0) goto LAB_0048bd6c;
              }
              else {
                lVar7 = 8;
                pbVar10 = pbVar5;
                pbVar11 = (byte *)"_GLOBAL_";
                do {
                  if (lVar7 == 0) break;
                  lVar7 = lVar7 + -1;
                  bVar14 = *pbVar10 < *pbVar11;
                  bVar16 = *pbVar10 == *pbVar11;
                  pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;
                  pbVar11 = pbVar11 + (ulong)bVar17 * -2 + 1;
                } while (bVar16);
                if ((((!bVar14 && !bVar16) == bVar14) && (pbVar5[9] == 0x4e)) &&
                   (pbVar5[8] == pbVar5[10])) {
                  pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[8]);
                  uVar8 = (ulong)uVar3;
                  if (pcVar12 != (char *)0x0) {
                    iVar2 = 1;
                    FUN_00486550(param_3,"{anonymous}",(ulong)uVar3);
                    pbVar5 = (byte *)(uVar9 + *param_2);
                    *param_2 = (long)pbVar5;
                    pbVar13 = (byte *)strpbrk((char *)pbVar5,&DAT_0067cb10);
                    goto LAB_0048beab;
                  }
                }
LAB_0048bd6c:
                FUN_004864a0(param_3,pbVar5,uVar8);
                pbVar5 = (byte *)*param_2;
              }
              pbVar5 = pbVar5 + uVar9;
              iVar2 = 1;
              *param_2 = (long)pbVar5;
              goto LAB_0048beab;
            }
            iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);
          }
          if (iVar2 == 0) {
            return 0;
          }
          pbVar5 = (byte *)*param_2;
LAB_0048beab:
          if (pbVar13 != pbVar5) {
            return 0;
          }
          bVar17 = *param_1;
          *param_2 = (long)(pbVar13 + 1);
          pcVar12 = ".";
          if ((bVar17 & 4) == 0) {
            pcVar12 = "::";
          }
          FUN_00486550(param_3,pcVar12);
          pcVar12 = (char *)*param_2;
          sVar6 = strlen(pcVar12);
          if ((int)sVar6 != 0) {
            FUN_004864a0(param_3,pcVar12,sVar6 & 0xffffffff);
            pcVar12 = (char *)*param_2;
          }
          *param_2 = (long)(pcVar12 + (int)sVar6);
          return iVar2;
        }
      }
    }
    else {
      pcVar12 = strchr(&DAT_0067cb10,(int)(char)bVar1);
      if ((pcVar12 != (char *)0x0) && (pbVar5[2] == 0x5f)) {
        *param_2 = (long)(pbVar5 + 3);
        *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1;
        return 1;
      }
      if (bVar1 == 0x5f) {
        bVar14 = pbVar5[2] < 0x76;
        bVar16 = pbVar5[2] == 0x76;
        if (bVar16) {
          bVar14 = pbVar5[3] < 0x74;
          bVar16 = pbVar5[3] == 0x74;
          if (bVar16) {
            bVar14 = pbVar5[4] < 0x5f;
            bVar16 = pbVar5[4] == 0x5f;
            if (bVar16) {
              pbVar13 = pbVar5 + 5;
LAB_0048bbeb:
              *param_2 = (long)pbVar13;
              iVar2 = 1;
LAB_0048bbfb:
              bVar17 = *pbVar13;
              do {
                if (bVar17 == 0) {
                  FUN_00486550(param_3," virtual table");
                  return iVar2;
                }
                if (bVar17 == 0x51) {
LAB_0048bf60:
                  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);
LAB_0048bf3f:
                  pbVar13 = (byte *)*param_2;
                  pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);
                  if (iVar2 == 0) {
                    return 0;
                  }
                }
                else {
                  if (bVar17 == 0x74) {
                    iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);
                    goto LAB_0048bf3f;
                  }
                  if (bVar17 == 0x4b) goto LAB_0048bf60;
                  if (((&DAT_0058aa80)[(ulong)bVar17 * 2] & 4) == 0) {
                    sVar6 = strcspn((char *)pbVar13,&DAT_0067cb10);
                    iVar4 = (int)sVar6;
LAB_0048bc3f:
                    if (iVar4 != 0) {
                      FUN_004864a0(param_3,pbVar13,iVar4);
                      pbVar13 = (byte *)*param_2;
                    }
                    pbVar13 = pbVar13 + iVar4;
                    *param_2 = (long)pbVar13;
                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);
                  }
                  else {
                    iVar4 = FUN_00486160(param_2);
                    pbVar13 = (byte *)*param_2;
                    sVar6 = strlen((char *)pbVar13);
                    if (iVar4 <= (int)sVar6) {
                      if (iVar4 == -1) {
                        return 0;
                      }
                      goto LAB_0048bc3f;
                    }
                    iVar2 = 1;
                    pbVar5 = (byte *)strpbrk((char *)pbVar13,&DAT_0067cb10);
                  }
                }
                if (pbVar5 == (byte *)0x0) goto LAB_0048bf80;
                if (pbVar13 != pbVar5) {
                  return 0;
                }
                pcVar12 = "::";
                if ((*param_1 & 4) != 0) {
                  pcVar12 = ".";
                }
                FUN_00486550(param_3,pcVar12);
                pbVar13 = (byte *)(*param_2 + 1);
                *param_2 = (long)pbVar13;
                bVar17 = *pbVar13;
              } while( true );
            }
          }
        }
      }
      else {
        if (bVar1 != 0x76) goto LAB_0048bcb8;
        bVar14 = pbVar5[2] < 0x74;
        bVar16 = pbVar5[2] == 0x74;
        if (bVar16) {
          bVar14 = false;
          bVar16 = pbVar5[3] == 0;
          if (!bVar16) {
            pbVar13 = pbVar5 + 4;
            pcVar12 = strchr(&DAT_0067cb10,(int)(char)pbVar5[3]);
            bVar14 = false;
            bVar16 = pcVar12 == (char *)0x0;
            if (!bVar16) goto LAB_0048bbeb;
          }
        }
      }
    }
  }
  lVar7 = 8;
  pbVar13 = pbVar5;
  pbVar10 = (byte *)"__thunk_";
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    bVar14 = *pbVar13 < *pbVar10;
    bVar16 = *pbVar13 == *pbVar10;
    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;
    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;
  } while (bVar16);
  bVar15 = false;
  bVar14 = (!bVar14 && !bVar16) == bVar14;
  if (bVar14) {
    *param_2 = (long)(pbVar5 + 8);
    iVar2 = FUN_00486160(param_2);
    if (iVar2 == -1) {
      return 0;
    }
    if (*(char *)*param_2 != '_') {
      return 0;
    }
    *param_2 = (long)((char *)*param_2 + 1);
    pcVar12 = (char *)FUN_0048c0f0(param_1);
    if (pcVar12 == (char *)0x0) {
      return 0;
    }
    sprintf(local_78,"virtual function thunk (delta:%d) for ",(ulong)(uint)-iVar2);
    if (local_78[0] != '\0') {
      FUN_00486550(param_3,local_78);
    }
    if (*pcVar12 != '\0') {
      FUN_00486550(param_3,pcVar12);
    }
    free(pcVar12);
    pcVar12 = (char *)*param_2;
    sVar6 = strlen(pcVar12);
    *param_2 = (long)(pcVar12 + (int)sVar6);
    return 1;
  }
  lVar7 = 3;
  pbVar13 = pbVar5;
  pbVar10 = &DAT_00588187;
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    bVar15 = *pbVar13 < *pbVar10;
    bVar14 = *pbVar13 == *pbVar10;
    pbVar13 = pbVar13 + (ulong)bVar17 * -2 + 1;
    pbVar10 = pbVar10 + (ulong)bVar17 * -2 + 1;
  } while (bVar14);
  if ((!bVar15 && !bVar14) != bVar15) {
    return 0;
  }
  bVar17 = pbVar5[3];
  if ((bVar17 != 0x69) && (bVar17 != 0x66)) {
    return 0;
  }
  pcVar12 = " type_info node";
  if (bVar17 != 0x69) {
    pcVar12 = " type_info function";
  }
  *param_2 = (long)(pbVar5 + 4);
  bVar17 = pbVar5[4];
  if (bVar17 != 0x51) {
    if (bVar17 == 0x74) {
      iVar2 = FUN_004897d0(param_1,param_2,param_3,0,1,1);
      goto LAB_0048bb64;
    }
    if (bVar17 != 0x4b) {
      iVar2 = FUN_00487a30(param_1,param_2,param_3);
      goto LAB_0048bb64;
    }
  }
  iVar2 = FUN_00489ed0(param_1,param_2,param_3,0,1);
LAB_0048bb64:
  if ((iVar2 != 0) && (*(char *)*param_2 == '\0')) {
    if (*pcVar12 == '\0') {
      return iVar2;
    }
    FUN_00486550(param_3,pcVar12);
    return iVar2;
  }
  return 0;
LAB_0048bf80:
  pbVar13 = (byte *)*param_2;
  goto LAB_0048bbfb;
}

