
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Unknown calling convention */

demangle_component * cplus_demangle_mangled_name(d_info *di,int top_level)

{
  byte bVar1;
  char *pcVar2;
  demangle_component *pdVar3;
  int iVar4;
  demangle_component_type *pdVar5;
  demangle_component *pdVar6;
  undefined1 uVar7;
  demangle_component *pdVar8;
  demangle_component *right;
  
  pcVar2 = di->n;
  if (*pcVar2 == '_') {
    di->n = pcVar2 + 1;
    if (pcVar2[1] == 'Z') {
      di->n = pcVar2 + 2;
      pdVar6 = d_encoding(di,top_level);
      if (top_level == 0) {
        return pdVar6;
      }
      if ((di->options & 1) == 0) {
        return pdVar6;
      }
      pdVar3 = (demangle_component *)di->n;
      if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {
        return pdVar6;
      }
      bVar1 = *(byte *)((int)&pdVar3->type + 1);
      do {
        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {
          uVar7 = *(byte *)((int)&pdVar3->type + 2);
          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);
          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;
          do {
            do {
              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);
              uVar7 = (undefined1)pdVar8->type;
            } while ((byte)(uVar7 + 0x9f) < 0x1a);
LAB_001dd7ff:
          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));
        }
        else {
          if (9 < (byte)(bVar1 - 0x30)) {
            return pdVar6;
          }
          uVar7 = (undefined1)pdVar3->type;
          pdVar8 = pdVar3;
        }
        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&
               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {
          pdVar5 = &pdVar8->type;
          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);
          uVar7 = *(byte *)((int)pdVar5 + 2);
          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {
            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);
            uVar7 = (undefined1)pdVar8->type;
          }
        }
        di->n = (char *)pdVar8;
        iVar4 = di->next_comp;
        if (iVar4 < di->num_comps) {
          right = di->comps + iVar4;
          right->d_printing = 0;
          di->next_comp = iVar4 + 1;
          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)
          goto LAB_001dd810;
          right->d_printing = 0;
          right->type = DEMANGLE_COMPONENT_NAME;
          (right->u).s_fixed.length = pdVar3;
          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);
        }
        else {
LAB_001dd810:
          right = (demangle_component *)0x0;
        }
        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);
        pdVar3 = (demangle_component *)di->n;
        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {
          return pdVar6;
        }
        bVar1 = *(byte *)((int)&pdVar3->type + 1);
      } while( true );
    }
  }
  else if ((top_level == 0) && (*pcVar2 == 'Z')) {
    di->n = pcVar2 + 1;
    pdVar6 = d_encoding(di,0);
    return pdVar6;
  }
  return (demangle_component *)0x0;
}



undefined4 FUN_001dd680(int param_1,int param_2)

{
  char *pcVar1;
  char *pcVar2;
  int iVar3;
  undefined4 uVar4;
  char cVar5;
  undefined4 *puVar6;
  char *pcVar7;
  
  pcVar2 = *(char **)(param_1 + 0xc);
  if (*pcVar2 == '_') {
    *(char **)(param_1 + 0xc) = pcVar2 + 1;
    if (pcVar2[1] == 'Z') {
      *(char **)(param_1 + 0xc) = pcVar2 + 2;
      uVar4 = FUN_001dcf00();
      if (param_2 == 0) {
        return uVar4;
      }
      if ((*(byte *)(param_1 + 8) & 1) == 0) {
        return uVar4;
      }
      pcVar2 = *(char **)(param_1 + 0xc);
      if (*pcVar2 != '.') {
        return uVar4;
      }
      cVar5 = pcVar2[1];
      do {
        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {
          cVar5 = pcVar2[2];
          pcVar7 = pcVar2 + 2;
          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;
          do {
            do {
              pcVar7 = pcVar7 + 1;
              cVar5 = *pcVar7;
            } while ((byte)(cVar5 + 0x9fU) < 0x1a);
LAB_001dd7ff:
          } while (cVar5 == '_');
        }
        else {
          if (9 < (byte)(cVar5 - 0x30U)) {
            return uVar4;
          }
          cVar5 = *pcVar2;
          pcVar7 = pcVar2;
        }
        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {
          pcVar1 = pcVar7 + 2;
          pcVar7 = pcVar7 + 2;
          cVar5 = *pcVar1;
          while ((byte)(cVar5 - 0x30U) < 10) {
            pcVar7 = pcVar7 + 1;
            cVar5 = *pcVar7;
          }
        }
        *(char **)(param_1 + 0xc) = pcVar7;
        iVar3 = *(int *)(param_1 + 0x14);
        if (iVar3 < *(int *)(param_1 + 0x18)) {
          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));
          puVar6[1] = 0;
          *(int *)(param_1 + 0x14) = iVar3 + 1;
          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;
          puVar6[1] = 0;
          *puVar6 = 0;
          puVar6[2] = pcVar2;
          puVar6[3] = (int)pcVar7 - (int)pcVar2;
        }
        else {
LAB_001dd810:
          puVar6 = (undefined4 *)0x0;
        }
        uVar4 = FUN_001d44f0(puVar6);
        pcVar2 = *(char **)(param_1 + 0xc);
        if (*pcVar2 != '.') {
          return uVar4;
        }
        cVar5 = pcVar2[1];
      } while( true );
    }
  }
  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {
    *(char **)(param_1 + 0xc) = pcVar2 + 1;
    uVar4 = FUN_001dcf00();
    return uVar4;
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EBX + 0xc]
MOVZX EDX,byte ptr [EAX]
CMP DL,0x5f
JZ 0x001dd6d0
TEST ESI,ESI
JNZ 0x001dd6a3
CMP DL,0x5a
JZ 0x001dd6b0
XOR EBP,EBP
ADD ESP,0xc
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD EAX,0x1
XOR EDX,EDX
MOV dword ptr [EBX + 0xc],EAX
ADD ESP,0xc
MOV EAX,EBX
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x001dcf00
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBX + 0xc],EDX
CMP byte ptr [EAX + 0x1],0x5a
JNZ 0x001dd6a3
ADD EAX,0x2
MOV EDX,ESI
MOV dword ptr [EBX + 0xc],EAX
MOV EAX,EBX
CALL 0x001dcf00
MOV EBP,EAX
TEST ESI,ESI
JZ 0x001dd6a5
TEST byte ptr [EBX + 0x8],0x1
JZ 0x001dd6a5
MOV ESI,dword ptr [EBX + 0xc]
CMP byte ptr [ESI],0x2e
JNZ 0x001dd6a5
MOVZX EDX,byte ptr [ESI + 0x1]
LEA ECX,[EDX + -0x61]
CMP CL,0x19
JBE 0x001dd7d7
NOP
CMP DL,0x5f
JZ 0x001dd7d7
SUB EDX,0x30
CMP DL,0x9
JA 0x001dd6a5
MOVZX ECX,byte ptr [ESI]
MOV EDX,ESI
CMP CL,0x2e
JNZ 0x001dd765
LEA ESI,[ESI]
NOP
MOVZX EAX,byte ptr [EDX + 0x1]
LEA ECX,[EAX + -0x30]
CMP CL,0x9
JA 0x001dd765
MOVZX ECX,byte ptr [EDX + 0x2]
LEA EDI,[EDX + 0x2]
LEA EDX,[ECX + -0x30]
CMP DL,0x9
JA 0x001dd75e
LEA ESI,[ESI]
NOP
ADD EDI,0x1
MOVZX ECX,byte ptr [EDI]
LEA EDX,[ECX + -0x30]
CMP DL,0x9
JBE 0x001dd750
MOV EDX,EDI
CMP CL,0x2e
JZ 0x001dd730
MOV ECX,EDX
MOV dword ptr [EBX + 0xc],EDX
MOV EDI,dword ptr [EBX + 0x14]
SUB ECX,ESI
CMP EDI,dword ptr [EBX + 0x18]
JGE 0x001dd810
MOV EDX,EDI
ADD EDI,0x1
SHL EDX,0x4
ADD EDX,dword ptr [EBX + 0x10]
MOV dword ptr [EDX + 0x4],0x0
MOV dword ptr [EBX + 0x14],EDI
TEST ECX,ECX
JZ 0x001dd810
MOV dword ptr [EDX + 0x4],0x0
MOV dword ptr [EDX],0x0
MOV dword ptr [EDX + 0x8],ESI
MOV dword ptr [EDX + 0xc],ECX
SUB ESP,0xc
MOV ECX,EBP
MOV EAX,EBX
PUSH EDX
MOV EDX,0x4d
CALL 0x001d44f0
MOV ESI,dword ptr [EBX + 0xc]
ADD ESP,0x10
MOV EBP,EAX
CMP byte ptr [ESI],0x2e
JNZ 0x001dd6a5
MOVZX EDX,byte ptr [ESI + 0x1]
LEA ECX,[EDX + -0x61]
CMP CL,0x19
JA 0x001dd710
MOVZX ECX,byte ptr [ESI + 0x2]
LEA EDX,[ESI + 0x2]
LEA EDI,[ECX + -0x61]
MOV EAX,EDI
CMP AL,0x19
JA 0x001dd7ff
LEA ESI,[ESI]
NOP
ADD EDX,0x1
MOVZX ECX,byte ptr [EDX]
LEA EDI,[ECX + -0x61]
MOV EAX,EDI
CMP AL,0x19
JBE 0x001dd7f0
CMP CL,0x5f
JZ 0x001dd7f0
JMP 0x001dd726
XOR EDX,EDX
JMP 0x001dd7a4
(translation_unit "undefined4 FUN_001dd680(int param_1,int param_2)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  int iVar3;\n  undefined4 uVar4;\n  char cVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_001dd680(int param_1,int param_2)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  int iVar3;\n  undefined4 uVar4;\n  char cVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_001dd680(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char *pcVar2;\n  int iVar3;\n  undefined4 uVar4;\n  char cVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" if (parenthesized_expression "(*pcVar2 == '_')" ( (binary_expression "*pcVar2 == '_'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }" if (parenthesized_expression "(pcVar2[1] == 'Z')" ( (binary_expression "pcVar2[1] == 'Z'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'Z'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_001dcf00();" (assignment_expression "uVar4 = FUN_001dcf00()" identifier = (call_expression "FUN_001dcf00()" identifier (argument_list "()" ( )))) ;) (if_statement "if (param_2 == 0) {\n        return uVar4;\n      }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n        return uVar4;\n      }" { (return_statement "return uVar4;" return identifier ;) })) (if_statement "if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }" if (parenthesized_expression "((*(byte *)(param_1 + 8) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 8) & 1)" ( (binary_expression "*(byte *)(param_1 + 8) & 1" (pointer_expression "*(byte *)(param_1 + 8)" * (cast_expression "(byte *)(param_1 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return uVar4;\n      }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 != '.') {\n        return uVar4;\n      }" if (parenthesized_expression "(*pcVar2 != '.')" ( (binary_expression "*pcVar2 != '.'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n        return uVar4;\n      }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "cVar5 = pcVar2[1];" (assignment_expression "cVar5 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (do_statement "do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );" do (compound_statement "{\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      }" { (if_statement "if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" if (parenthesized_expression "(((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_'))" ( (binary_expression "((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')" (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar5 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) ))) < number_literal) )) || (parenthesized_expression "(cVar5 == '_')" ( (binary_expression "cVar5 == '_'" identifier == (char_literal "'_'" ' character ')) ))) )) (compound_statement "{\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }" { (expression_statement "cVar5 = pcVar2[2];" (assignment_expression "cVar5 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar7 = pcVar2 + 2;" (assignment_expression "pcVar7 = pcVar2 + 2" identifier = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (if_statement "if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;" if (parenthesized_expression "(0x19 < (byte)(cVar5 + 0x9fU))" ( (binary_expression "0x19 < (byte)(cVar5 + 0x9fU)" number_literal < (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) )))) )) (goto_statement "goto LAB_001dd7ff;" goto statement_identifier ;)) (do_statement "do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');" do (compound_statement "{\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          }" { (do_statement "do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);" do (compound_statement "{\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            }" { (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "cVar5 = *pcVar7;" (assignment_expression "cVar5 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) }) while (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar5 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) ))) < number_literal) )) ;) (labeled_statement "LAB_001dd7ff:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(cVar5 == '_')" ( (binary_expression "cVar5 == '_'" identifier == (char_literal "'_'" ' character ')) )) ;) }) (else_clause "else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" else (compound_statement "{\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" { (if_statement "if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }" if (parenthesized_expression "(9 < (byte)(cVar5 - 0x30U))" ( (binary_expression "9 < (byte)(cVar5 - 0x30U)" number_literal < (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x30U)" ( (binary_expression "cVar5 - 0x30U" identifier - number_literal) )))) )) (compound_statement "{\n            return uVar4;\n          }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "cVar5 = *pcVar2;" (assignment_expression "cVar5 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "pcVar7 = pcVar2;" (assignment_expression "pcVar7 = pcVar2" identifier = identifier) ;) }))) (while_statement "while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }" while (parenthesized_expression "((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10)))" ( (parenthesized_expression "(cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))" ( (binary_expression "cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10)" (binary_expression "cVar5 == '.'" identifier == (char_literal "'.'" ' character ')) && (parenthesized_expression "((byte)(pcVar7[1] - 0x30U) < 10)" ( (binary_expression "(byte)(pcVar7[1] - 0x30U) < 10" (call_expression "(byte)(pcVar7[1] - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pcVar7[1] - 0x30U)" ( (binary_expression "pcVar7[1] - 0x30U" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) - number_literal) ))) < number_literal) ))) )) )) (compound_statement "{\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }" { (expression_statement "pcVar1 = pcVar7 + 2;" (assignment_expression "pcVar1 = pcVar7 + 2" identifier = (binary_expression "pcVar7 + 2" identifier + number_literal)) ;) (expression_statement "pcVar7 = pcVar7 + 2;" (assignment_expression "pcVar7 = pcVar7 + 2" identifier = (binary_expression "pcVar7 + 2" identifier + number_literal)) ;) (expression_statement "cVar5 = *pcVar1;" (assignment_expression "cVar5 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (while_statement "while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }" while (parenthesized_expression "((byte)(cVar5 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar5 - 0x30U) < 10" (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x30U)" ( (binary_expression "cVar5 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }" { (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "cVar5 = *pcVar7;" (assignment_expression "cVar5 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) })) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar7;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar7" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" if (parenthesized_expression "(iVar3 < *(int *)(param_1 + 0x18))" ( (binary_expression "iVar3 < *(int *)(param_1 + 0x18)" identifier < (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }" { (expression_statement "puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar3 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;" if (parenthesized_expression "((int)pcVar7 - (int)pcVar2 == 0)" ( (binary_expression "(int)pcVar7 - (int)pcVar2 == 0" (binary_expression "(int)pcVar7 - (int)pcVar2" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier)) == number_literal) )) (goto_statement "goto LAB_001dd810;" goto statement_identifier ;)) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[2] = pcVar2;" (assignment_expression "puVar6[2] = pcVar2" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = (int)pcVar7 - (int)pcVar2;" (assignment_expression "puVar6[3] = (int)pcVar7 - (int)pcVar2" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (binary_expression "(int)pcVar7 - (int)pcVar2" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" else (compound_statement "{\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" { (labeled_statement "LAB_001dd810:\n          puVar6 = (undefined4 *)0x0;" statement_identifier : (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (expression_statement "uVar4 = FUN_001d44f0(puVar6);" (assignment_expression "uVar4 = FUN_001d44f0(puVar6)" identifier = (call_expression "FUN_001d44f0(puVar6)" identifier (argument_list "(puVar6)" ( identifier )))) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 != '.') {\n          return uVar4;\n        }" if (parenthesized_expression "(*pcVar2 != '.')" ( (binary_expression "*pcVar2 != '.'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n          return uVar4;\n        }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "cVar5 = pcVar2[1];" (assignment_expression "cVar5 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" else (if_statement "if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" if (parenthesized_expression "((param_2 == 0) && (*pcVar2 == 'Z'))" ( (binary_expression "(param_2 == 0) && (*pcVar2 == 'Z')" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) && (parenthesized_expression "(*pcVar2 == 'Z')" ( (binary_expression "*pcVar2 == 'Z'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'Z'" ' character ')) ))) )) (compound_statement "{\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_001dcf00();" (assignment_expression "uVar4 = FUN_001dcf00()" identifier = (call_expression "FUN_001dcf00()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar4;" return identifier ;) })))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Unknown calling convention */\n\ndemangle_component * cplus_demangle_mangled_name(d_info *di,int top_level)\n\n{\n  byte bVar1;\n  char *pcVar2;\n  demangle_component *pdVar3;\n  int iVar4;\n  demangle_component_type *pdVar5;\n  demangle_component *pdVar6;\n  undefined1 uVar7;\n  demangle_component *pdVar8;\n  demangle_component *right;\n  \n  pcVar2 = di->n;\n  if (*pcVar2 == '_') {\n    di->n = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      di->n = pcVar2 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if (top_level == 0) {\n        return pdVar6;\n      }\n      if ((di->options & 1) == 0) {\n        return pdVar6;\n      }\n      pdVar3 = (demangle_component *)di->n;\n      if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n        return pdVar6;\n      }\n      bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      do {\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      } while( true );\n    }\n  }\n  else if ((top_level == 0) && (*pcVar2 == 'Z')) {\n    di->n = pcVar2 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }\n  return (demangle_component *)0x0;\n}\n\n" comment comment (function_definition "demangle_component * cplus_demangle_mangled_name(d_info *di,int top_level)\n\n{\n  byte bVar1;\n  char *pcVar2;\n  demangle_component *pdVar3;\n  int iVar4;\n  demangle_component_type *pdVar5;\n  demangle_component *pdVar6;\n  undefined1 uVar7;\n  demangle_component *pdVar8;\n  demangle_component *right;\n  \n  pcVar2 = di->n;\n  if (*pcVar2 == '_') {\n    di->n = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      di->n = pcVar2 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if (top_level == 0) {\n        return pdVar6;\n      }\n      if ((di->options & 1) == 0) {\n        return pdVar6;\n      }\n      pdVar3 = (demangle_component *)di->n;\n      if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n        return pdVar6;\n      }\n      bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      do {\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      } while( true );\n    }\n  }\n  else if ((top_level == 0) && (*pcVar2 == 'Z')) {\n    di->n = pcVar2 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }\n  return (demangle_component *)0x0;\n}" type_identifier (pointer_declarator "* cplus_demangle_mangled_name(d_info *di,int top_level)" * (function_declarator "cplus_demangle_mangled_name(d_info *di,int top_level)" identifier (parameter_list "(d_info *di,int top_level)" ( (parameter_declaration "d_info *di" type_identifier (pointer_declarator "*di" * identifier)) , (parameter_declaration "int top_level" primitive_type identifier) )))) (compound_statement "{\n  byte bVar1;\n  char *pcVar2;\n  demangle_component *pdVar3;\n  int iVar4;\n  demangle_component_type *pdVar5;\n  demangle_component *pdVar6;\n  undefined1 uVar7;\n  demangle_component *pdVar8;\n  demangle_component *right;\n  \n  pcVar2 = di->n;\n  if (*pcVar2 == '_') {\n    di->n = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      di->n = pcVar2 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if (top_level == 0) {\n        return pdVar6;\n      }\n      if ((di->options & 1) == 0) {\n        return pdVar6;\n      }\n      pdVar3 = (demangle_component *)di->n;\n      if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n        return pdVar6;\n      }\n      bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      do {\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      } while( true );\n    }\n  }\n  else if ((top_level == 0) && (*pcVar2 == 'Z')) {\n    di->n = pcVar2 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }\n  return (demangle_component *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "demangle_component *pdVar3;" type_identifier (pointer_declarator "*pdVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "demangle_component_type *pdVar5;" type_identifier (pointer_declarator "*pdVar5" * identifier) ;) (declaration "demangle_component *pdVar6;" type_identifier (pointer_declarator "*pdVar6" * identifier) ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "demangle_component *pdVar8;" type_identifier (pointer_declarator "*pdVar8" * identifier) ;) (declaration "demangle_component *right;" type_identifier (pointer_declarator "*right" * identifier) ;) (expression_statement "pcVar2 = di->n;" (assignment_expression "pcVar2 = di->n" identifier = (field_expression "di->n" identifier -> field_identifier)) ;) (if_statement "if (*pcVar2 == '_') {\n    di->n = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      di->n = pcVar2 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if (top_level == 0) {\n        return pdVar6;\n      }\n      if ((di->options & 1) == 0) {\n        return pdVar6;\n      }\n      pdVar3 = (demangle_component *)di->n;\n      if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n        return pdVar6;\n      }\n      bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      do {\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      } while( true );\n    }\n  }\n  else if ((top_level == 0) && (*pcVar2 == 'Z')) {\n    di->n = pcVar2 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }" if (parenthesized_expression "(*pcVar2 == '_')" ( (binary_expression "*pcVar2 == '_'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n    di->n = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      di->n = pcVar2 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if (top_level == 0) {\n        return pdVar6;\n      }\n      if ((di->options & 1) == 0) {\n        return pdVar6;\n      }\n      pdVar3 = (demangle_component *)di->n;\n      if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n        return pdVar6;\n      }\n      bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      do {\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      } while( true );\n    }\n  }" { (expression_statement "di->n = pcVar2 + 1;" (assignment_expression "di->n = pcVar2 + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] == 'Z') {\n      di->n = pcVar2 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if (top_level == 0) {\n        return pdVar6;\n      }\n      if ((di->options & 1) == 0) {\n        return pdVar6;\n      }\n      pdVar3 = (demangle_component *)di->n;\n      if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n        return pdVar6;\n      }\n      bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      do {\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      } while( true );\n    }" if (parenthesized_expression "(pcVar2[1] == 'Z')" ( (binary_expression "pcVar2[1] == 'Z'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'Z'" ' character ')) )) (compound_statement "{\n      di->n = pcVar2 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if (top_level == 0) {\n        return pdVar6;\n      }\n      if ((di->options & 1) == 0) {\n        return pdVar6;\n      }\n      pdVar3 = (demangle_component *)di->n;\n      if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n        return pdVar6;\n      }\n      bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      do {\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      } while( true );\n    }" { (expression_statement "di->n = pcVar2 + 2;" (assignment_expression "di->n = pcVar2 + 2" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "pdVar6 = d_encoding(di,top_level);" (assignment_expression "pdVar6 = d_encoding(di,top_level)" identifier = (call_expression "d_encoding(di,top_level)" identifier (argument_list "(di,top_level)" ( identifier , identifier )))) ;) (if_statement "if (top_level == 0) {\n        return pdVar6;\n      }" if (parenthesized_expression "(top_level == 0)" ( (binary_expression "top_level == 0" identifier == number_literal) )) (compound_statement "{\n        return pdVar6;\n      }" { (return_statement "return pdVar6;" return identifier ;) })) (if_statement "if ((di->options & 1) == 0) {\n        return pdVar6;\n      }" if (parenthesized_expression "((di->options & 1) == 0)" ( (binary_expression "(di->options & 1) == 0" (parenthesized_expression "(di->options & 1)" ( (binary_expression "di->options & 1" (field_expression "di->options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        return pdVar6;\n      }" { (return_statement "return pdVar6;" return identifier ;) })) (expression_statement "pdVar3 = (demangle_component *)di->n;" (assignment_expression "pdVar3 = (demangle_component *)di->n" identifier = (cast_expression "(demangle_component *)di->n" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "di->n" identifier -> field_identifier))) ;) (if_statement "if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n        return pdVar6;\n      }" if (parenthesized_expression "((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST)" ( (binary_expression "(char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST" (cast_expression "(char)pdVar3->type" ( (type_descriptor "char" primitive_type) ) (field_expression "pdVar3->type" identifier -> field_identifier)) != identifier) )) (compound_statement "{\n        return pdVar6;\n      }" { (return_statement "return pdVar6;" return identifier ;) })) (expression_statement "bVar1 = *(byte *)((int)&pdVar3->type + 1);" (assignment_expression "bVar1 = *(byte *)((int)&pdVar3->type + 1)" identifier = (pointer_expression "*(byte *)((int)&pdVar3->type + 1)" * (cast_expression "(byte *)((int)&pdVar3->type + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar3->type + 1)" ( (binary_expression "(int)&pdVar3->type + 1" (cast_expression "(int)&pdVar3->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar3->type" & (field_expression "pdVar3->type" identifier -> field_identifier))) + number_literal) ))))) ;) (do_statement "do {\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      } while( true );" do (compound_statement "{\n        if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }\n        while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }\n        di->n = (char *)pdVar8;\n        iVar4 = di->next_comp;\n        if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }\n        pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);\n        pdVar3 = (demangle_component *)di->n;\n        if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }\n        bVar1 = *(byte *)((int)&pdVar3->type + 1);\n      }" { (if_statement "if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }\n        else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }" if (parenthesized_expression "(((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f))" ( (binary_expression "((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)" (parenthesized_expression "((byte)(bVar1 + 0x9f) < 0x1a)" ( (binary_expression "(byte)(bVar1 + 0x9f) < 0x1a" (call_expression "(byte)(bVar1 + 0x9f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 + 0x9f)" ( (binary_expression "bVar1 + 0x9f" identifier + number_literal) ))) < number_literal) )) || (parenthesized_expression "(bVar1 == 0x5f)" ( (binary_expression "bVar1 == 0x5f" identifier == number_literal) ))) )) (compound_statement "{\n          uVar7 = *(byte *)((int)&pdVar3->type + 2);\n          pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);\n          if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;\n          do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n        }" { (expression_statement "uVar7 = *(byte *)((int)&pdVar3->type + 2);" (assignment_expression "uVar7 = *(byte *)((int)&pdVar3->type + 2)" identifier = (pointer_expression "*(byte *)((int)&pdVar3->type + 2)" * (cast_expression "(byte *)((int)&pdVar3->type + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar3->type + 2)" ( (binary_expression "(int)&pdVar3->type + 2" (cast_expression "(int)&pdVar3->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar3->type" & (field_expression "pdVar3->type" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pdVar8 = (demangle_component *)((int)&pdVar3->type + 2);" (assignment_expression "pdVar8 = (demangle_component *)((int)&pdVar3->type + 2)" identifier = (cast_expression "(demangle_component *)((int)&pdVar3->type + 2)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar3->type + 2)" ( (binary_expression "(int)&pdVar3->type + 2" (cast_expression "(int)&pdVar3->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar3->type" & (field_expression "pdVar3->type" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (0x19 < (byte)(uVar7 + 0x9f)) goto LAB_001dd7ff;" if (parenthesized_expression "(0x19 < (byte)(uVar7 + 0x9f))" ( (binary_expression "0x19 < (byte)(uVar7 + 0x9f)" number_literal < (call_expression "(byte)(uVar7 + 0x9f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar7 + 0x9f)" ( (binary_expression "uVar7 + 0x9f" identifier + number_literal) )))) )) (goto_statement "goto LAB_001dd7ff;" goto statement_identifier ;)) (do_statement "do {\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          } while (uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));" do (compound_statement "{\n            do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);\nLAB_001dd7ff:\n          }" { (do_statement "do {\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            } while ((byte)(uVar7 + 0x9f) < 0x1a);" do (compound_statement "{\n              pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n              uVar7 = (undefined1)pdVar8->type;\n            }" { (expression_statement "pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);" (assignment_expression "pdVar8 = (demangle_component *)((int)&pdVar8->type + 1)" identifier = (cast_expression "(demangle_component *)((int)&pdVar8->type + 1)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar8->type + 1)" ( (binary_expression "(int)&pdVar8->type + 1" (cast_expression "(int)&pdVar8->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar8->type" & (field_expression "pdVar8->type" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar7 = (undefined1)pdVar8->type;" (assignment_expression "uVar7 = (undefined1)pdVar8->type" identifier = (cast_expression "(undefined1)pdVar8->type" ( (type_descriptor "undefined1" type_identifier) ) (field_expression "pdVar8->type" identifier -> field_identifier))) ;) }) while (parenthesized_expression "((byte)(uVar7 + 0x9f) < 0x1a)" ( (binary_expression "(byte)(uVar7 + 0x9f) < 0x1a" (call_expression "(byte)(uVar7 + 0x9f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar7 + 0x9f)" ( (binary_expression "uVar7 + 0x9f" identifier + number_literal) ))) < number_literal) )) ;) (labeled_statement "LAB_001dd7ff:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS))" ( (binary_expression "uVar7 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS)" identifier == (parenthesized_expression "(DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS)" ( (binary_expression "DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS" identifier | identifier) ))) )) ;) }) (else_clause "else {\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }" else (compound_statement "{\n          if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }\n          uVar7 = (undefined1)pdVar3->type;\n          pdVar8 = pdVar3;\n        }" { (if_statement "if (9 < (byte)(bVar1 - 0x30)) {\n            return pdVar6;\n          }" if (parenthesized_expression "(9 < (byte)(bVar1 - 0x30))" ( (binary_expression "9 < (byte)(bVar1 - 0x30)" number_literal < (call_expression "(byte)(bVar1 - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x30)" ( (binary_expression "bVar1 - 0x30" identifier - number_literal) )))) )) (compound_statement "{\n            return pdVar6;\n          }" { (return_statement "return pdVar6;" return identifier ;) })) (expression_statement "uVar7 = (undefined1)pdVar3->type;" (assignment_expression "uVar7 = (undefined1)pdVar3->type" identifier = (cast_expression "(undefined1)pdVar3->type" ( (type_descriptor "undefined1" type_identifier) ) (field_expression "pdVar3->type" identifier -> field_identifier))) ;) (expression_statement "pdVar8 = pdVar3;" (assignment_expression "pdVar8 = pdVar3" identifier = identifier) ;) }))) (while_statement "while ((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))) {\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }" while (parenthesized_expression "((uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10)))" ( (parenthesized_expression "(uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10))" ( (binary_expression "uVar7 == DEMANGLE_COMPONENT_ARGLIST &&\n               ((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10)" (binary_expression "uVar7 == DEMANGLE_COMPONENT_ARGLIST" identifier == identifier) && (parenthesized_expression "((byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10)" ( (binary_expression "(byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30) < 10" (call_expression "(byte)(*(byte *)((int)&pdVar8->type + 1) - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(byte *)((int)&pdVar8->type + 1) - 0x30)" ( (binary_expression "*(byte *)((int)&pdVar8->type + 1) - 0x30" (pointer_expression "*(byte *)((int)&pdVar8->type + 1)" * (cast_expression "(byte *)((int)&pdVar8->type + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar8->type + 1)" ( (binary_expression "(int)&pdVar8->type + 1" (cast_expression "(int)&pdVar8->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar8->type" & (field_expression "pdVar8->type" identifier -> field_identifier))) + number_literal) )))) - number_literal) ))) < number_literal) ))) )) )) (compound_statement "{\n          pdVar5 = &pdVar8->type;\n          pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);\n          uVar7 = *(byte *)((int)pdVar5 + 2);\n          while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }\n        }" { (expression_statement "pdVar5 = &pdVar8->type;" (assignment_expression "pdVar5 = &pdVar8->type" identifier = (pointer_expression "&pdVar8->type" & (field_expression "pdVar8->type" identifier -> field_identifier))) ;) (expression_statement "pdVar8 = (demangle_component *)((int)&pdVar8->type + 2);" (assignment_expression "pdVar8 = (demangle_component *)((int)&pdVar8->type + 2)" identifier = (cast_expression "(demangle_component *)((int)&pdVar8->type + 2)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar8->type + 2)" ( (binary_expression "(int)&pdVar8->type + 2" (cast_expression "(int)&pdVar8->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar8->type" & (field_expression "pdVar8->type" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar7 = *(byte *)((int)pdVar5 + 2);" (assignment_expression "uVar7 = *(byte *)((int)pdVar5 + 2)" identifier = (pointer_expression "*(byte *)((int)pdVar5 + 2)" * (cast_expression "(byte *)((int)pdVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar5 + 2)" ( (binary_expression "(int)pdVar5 + 2" (cast_expression "(int)pdVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (while_statement "while ((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }" while (parenthesized_expression "((byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10)" ( (binary_expression "(byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10" (call_expression "(byte)(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST)" ( (binary_expression "uVar7 - DEMANGLE_COMPONENT_INITIALIZER_LIST" identifier - identifier) ))) < number_literal) )) (compound_statement "{\n            pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);\n            uVar7 = (undefined1)pdVar8->type;\n          }" { (expression_statement "pdVar8 = (demangle_component *)((int)&pdVar8->type + 1);" (assignment_expression "pdVar8 = (demangle_component *)((int)&pdVar8->type + 1)" identifier = (cast_expression "(demangle_component *)((int)&pdVar8->type + 1)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar8->type + 1)" ( (binary_expression "(int)&pdVar8->type + 1" (cast_expression "(int)&pdVar8->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar8->type" & (field_expression "pdVar8->type" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar7 = (undefined1)pdVar8->type;" (assignment_expression "uVar7 = (undefined1)pdVar8->type" identifier = (cast_expression "(undefined1)pdVar8->type" ( (type_descriptor "undefined1" type_identifier) ) (field_expression "pdVar8->type" identifier -> field_identifier))) ;) })) })) (expression_statement "di->n = (char *)pdVar8;" (assignment_expression "di->n = (char *)pdVar8" (field_expression "di->n" identifier -> field_identifier) = (cast_expression "(char *)pdVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar4 = di->next_comp;" (assignment_expression "iVar4 = di->next_comp" identifier = (field_expression "di->next_comp" identifier -> field_identifier)) ;) (if_statement "if (iVar4 < di->num_comps) {\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }\n        else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }" if (parenthesized_expression "(iVar4 < di->num_comps)" ( (binary_expression "iVar4 < di->num_comps" identifier < (field_expression "di->num_comps" identifier -> field_identifier)) )) (compound_statement "{\n          right = di->comps + iVar4;\n          right->d_printing = 0;\n          di->next_comp = iVar4 + 1;\n          if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;\n          right->d_printing = 0;\n          right->type = DEMANGLE_COMPONENT_NAME;\n          (right->u).s_fixed.length = pdVar3;\n          (right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);\n        }" { (expression_statement "right = di->comps + iVar4;" (assignment_expression "right = di->comps + iVar4" identifier = (binary_expression "di->comps + iVar4" (field_expression "di->comps" identifier -> field_identifier) + identifier)) ;) (expression_statement "right->d_printing = 0;" (assignment_expression "right->d_printing = 0" (field_expression "right->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "di->next_comp = iVar4 + 1;" (assignment_expression "di->next_comp = iVar4 + 1" (field_expression "di->next_comp" identifier -> field_identifier) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if ((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)\n          goto LAB_001dd810;" if (parenthesized_expression "((demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0)" ( (binary_expression "(demangle_component *)((int)pdVar8 - (int)pdVar3) == (demangle_component *)0x0" (cast_expression "(demangle_component *)((int)pdVar8 - (int)pdVar3)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar8 - (int)pdVar3)" ( (binary_expression "(int)pdVar8 - (int)pdVar3" (cast_expression "(int)pdVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pdVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) == (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001dd810;" goto statement_identifier ;)) (expression_statement "right->d_printing = 0;" (assignment_expression "right->d_printing = 0" (field_expression "right->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "right->type = DEMANGLE_COMPONENT_NAME;" (assignment_expression "right->type = DEMANGLE_COMPONENT_NAME" (field_expression "right->type" identifier -> field_identifier) = identifier) ;) (expression_statement "(right->u).s_fixed.length = pdVar3;" (assignment_expression "(right->u).s_fixed.length = pdVar3" (field_expression "(right->u).s_fixed.length" (field_expression "(right->u).s_fixed" (parenthesized_expression "(right->u)" ( (field_expression "right->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3);" (assignment_expression "(right->u).s_extended_operator.name = (demangle_component *)((int)pdVar8 - (int)pdVar3)" (field_expression "(right->u).s_extended_operator.name" (field_expression "(right->u).s_extended_operator" (parenthesized_expression "(right->u)" ( (field_expression "right->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(demangle_component *)((int)pdVar8 - (int)pdVar3)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar8 - (int)pdVar3)" ( (binary_expression "(int)pdVar8 - (int)pdVar3" (cast_expression "(int)pdVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pdVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) (else_clause "else {\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }" else (compound_statement "{\nLAB_001dd810:\n          right = (demangle_component *)0x0;\n        }" { (labeled_statement "LAB_001dd810:\n          right = (demangle_component *)0x0;" statement_identifier : (expression_statement "right = (demangle_component *)0x0;" (assignment_expression "right = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (expression_statement "pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);" (assignment_expression "pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right)" identifier = (call_expression "d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right)" identifier (argument_list "(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "pdVar3 = (demangle_component *)di->n;" (assignment_expression "pdVar3 = (demangle_component *)di->n" identifier = (cast_expression "(demangle_component *)di->n" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "di->n" identifier -> field_identifier))) ;) (if_statement "if ((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST) {\n          return pdVar6;\n        }" if (parenthesized_expression "((char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST)" ( (binary_expression "(char)pdVar3->type != DEMANGLE_COMPONENT_ARGLIST" (cast_expression "(char)pdVar3->type" ( (type_descriptor "char" primitive_type) ) (field_expression "pdVar3->type" identifier -> field_identifier)) != identifier) )) (compound_statement "{\n          return pdVar6;\n        }" { (return_statement "return pdVar6;" return identifier ;) })) (expression_statement "bVar1 = *(byte *)((int)&pdVar3->type + 1);" (assignment_expression "bVar1 = *(byte *)((int)&pdVar3->type + 1)" identifier = (pointer_expression "*(byte *)((int)&pdVar3->type + 1)" * (cast_expression "(byte *)((int)&pdVar3->type + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar3->type + 1)" ( (binary_expression "(int)&pdVar3->type + 1" (cast_expression "(int)&pdVar3->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar3->type" & (field_expression "pdVar3->type" identifier -> field_identifier))) + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else if ((top_level == 0) && (*pcVar2 == 'Z')) {\n    di->n = pcVar2 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }" else (if_statement "if ((top_level == 0) && (*pcVar2 == 'Z')) {\n    di->n = pcVar2 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }" if (parenthesized_expression "((top_level == 0) && (*pcVar2 == 'Z'))" ( (binary_expression "(top_level == 0) && (*pcVar2 == 'Z')" (parenthesized_expression "(top_level == 0)" ( (binary_expression "top_level == 0" identifier == number_literal) )) && (parenthesized_expression "(*pcVar2 == 'Z')" ( (binary_expression "*pcVar2 == 'Z'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'Z'" ' character ')) ))) )) (compound_statement "{\n    di->n = pcVar2 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }" { (expression_statement "di->n = pcVar2 + 1;" (assignment_expression "di->n = pcVar2 + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "pdVar6 = d_encoding(di,0);" (assignment_expression "pdVar6 = d_encoding(di,0)" identifier = (call_expression "d_encoding(di,0)" identifier (argument_list "(di,0)" ( identifier , number_literal )))) ;) (return_statement "return pdVar6;" return identifier ;) })))) (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "undefined4 FUN_001dd680(int param_1,int param_2)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  int iVar3;\n  undefined4 uVar4;\n  char cVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_001dd680(int param_1,int param_2)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  int iVar3;\n  undefined4 uVar4;\n  char cVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_001dd680(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char *pcVar2;\n  int iVar3;\n  undefined4 uVar4;\n  char cVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" if (parenthesized_expression "(*pcVar2 == '_')" ( (binary_expression "*pcVar2 == '_'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }" if (parenthesized_expression "(pcVar2[1] == 'Z')" ( (binary_expression "pcVar2[1] == 'Z'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'Z'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_001dcf00();" (assignment_expression "uVar4 = FUN_001dcf00()" identifier = (call_expression "FUN_001dcf00()" identifier (argument_list "()" ( )))) ;) (if_statement "if (param_2 == 0) {\n        return uVar4;\n      }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n        return uVar4;\n      }" { (return_statement "return uVar4;" return identifier ;) })) (if_statement "if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }" if (parenthesized_expression "((*(byte *)(param_1 + 8) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 8) & 1)" ( (binary_expression "*(byte *)(param_1 + 8) & 1" (pointer_expression "*(byte *)(param_1 + 8)" * (cast_expression "(byte *)(param_1 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        return uVar4;\n      }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 != '.') {\n        return uVar4;\n      }" if (parenthesized_expression "(*pcVar2 != '.')" ( (binary_expression "*pcVar2 != '.'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n        return uVar4;\n      }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "cVar5 = pcVar2[1];" (assignment_expression "cVar5 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (do_statement "do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );" do (compound_statement "{\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      }" { (if_statement "if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" if (parenthesized_expression "(((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_'))" ( (binary_expression "((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')" (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar5 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) ))) < number_literal) )) || (parenthesized_expression "(cVar5 == '_')" ( (binary_expression "cVar5 == '_'" identifier == (char_literal "'_'" ' character ')) ))) )) (compound_statement "{\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }" { (expression_statement "cVar5 = pcVar2[2];" (assignment_expression "cVar5 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar7 = pcVar2 + 2;" (assignment_expression "pcVar7 = pcVar2 + 2" identifier = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (if_statement "if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;" if (parenthesized_expression "(0x19 < (byte)(cVar5 + 0x9fU))" ( (binary_expression "0x19 < (byte)(cVar5 + 0x9fU)" number_literal < (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) )))) )) (goto_statement "goto LAB_001dd7ff;" goto statement_identifier ;)) (do_statement "do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');" do (compound_statement "{\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          }" { (do_statement "do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);" do (compound_statement "{\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            }" { (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "cVar5 = *pcVar7;" (assignment_expression "cVar5 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) }) while (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar5 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) ))) < number_literal) )) ;) (labeled_statement "LAB_001dd7ff:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(cVar5 == '_')" ( (binary_expression "cVar5 == '_'" identifier == (char_literal "'_'" ' character ')) )) ;) }) (else_clause "else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" else (compound_statement "{\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" { (if_statement "if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }" if (parenthesized_expression "(9 < (byte)(cVar5 - 0x30U))" ( (binary_expression "9 < (byte)(cVar5 - 0x30U)" number_literal < (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x30U)" ( (binary_expression "cVar5 - 0x30U" identifier - number_literal) )))) )) (compound_statement "{\n            return uVar4;\n          }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "cVar5 = *pcVar2;" (assignment_expression "cVar5 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "pcVar7 = pcVar2;" (assignment_expression "pcVar7 = pcVar2" identifier = identifier) ;) }))) (while_statement "while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }" while (parenthesized_expression "((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10)))" ( (parenthesized_expression "(cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))" ( (binary_expression "cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10)" (binary_expression "cVar5 == '.'" identifier == (char_literal "'.'" ' character ')) && (parenthesized_expression "((byte)(pcVar7[1] - 0x30U) < 10)" ( (binary_expression "(byte)(pcVar7[1] - 0x30U) < 10" (call_expression "(byte)(pcVar7[1] - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pcVar7[1] - 0x30U)" ( (binary_expression "pcVar7[1] - 0x30U" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) - number_literal) ))) < number_literal) ))) )) )) (compound_statement "{\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }" { (expression_statement "pcVar1 = pcVar7 + 2;" (assignment_expression "pcVar1 = pcVar7 + 2" identifier = (binary_expression "pcVar7 + 2" identifier + number_literal)) ;) (expression_statement "pcVar7 = pcVar7 + 2;" (assignment_expression "pcVar7 = pcVar7 + 2" identifier = (binary_expression "pcVar7 + 2" identifier + number_literal)) ;) (expression_statement "cVar5 = *pcVar1;" (assignment_expression "cVar5 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (while_statement "while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }" while (parenthesized_expression "((byte)(cVar5 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar5 - 0x30U) < 10" (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x30U)" ( (binary_expression "cVar5 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }" { (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "cVar5 = *pcVar7;" (assignment_expression "cVar5 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) })) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar7;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar7" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" if (parenthesized_expression "(iVar3 < *(int *)(param_1 + 0x18))" ( (binary_expression "iVar3 < *(int *)(param_1 + 0x18)" identifier < (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }" { (expression_statement "puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar3 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;" if (parenthesized_expression "((int)pcVar7 - (int)pcVar2 == 0)" ( (binary_expression "(int)pcVar7 - (int)pcVar2 == 0" (binary_expression "(int)pcVar7 - (int)pcVar2" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier)) == number_literal) )) (goto_statement "goto LAB_001dd810;" goto statement_identifier ;)) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[2] = pcVar2;" (assignment_expression "puVar6[2] = pcVar2" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = (int)pcVar7 - (int)pcVar2;" (assignment_expression "puVar6[3] = (int)pcVar7 - (int)pcVar2" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = (binary_expression "(int)pcVar7 - (int)pcVar2" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" else (compound_statement "{\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" { (labeled_statement "LAB_001dd810:\n          puVar6 = (undefined4 *)0x0;" statement_identifier : (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (expression_statement "uVar4 = FUN_001d44f0(puVar6);" (assignment_expression "uVar4 = FUN_001d44f0(puVar6)" identifier = (call_expression "FUN_001d44f0(puVar6)" identifier (argument_list "(puVar6)" ( identifier )))) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 != '.') {\n          return uVar4;\n        }" if (parenthesized_expression "(*pcVar2 != '.')" ( (binary_expression "*pcVar2 != '.'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n          return uVar4;\n        }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "cVar5 = pcVar2[1];" (assignment_expression "cVar5 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" else (if_statement "if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" if (parenthesized_expression "((param_2 == 0) && (*pcVar2 == 'Z'))" ( (binary_expression "(param_2 == 0) && (*pcVar2 == 'Z')" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) && (parenthesized_expression "(*pcVar2 == 'Z')" ( (binary_expression "*pcVar2 == 'Z'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'Z'" ' character ')) ))) )) (compound_statement "{\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_001dcf00();" (assignment_expression "uVar4 = FUN_001dcf00()" identifier = (call_expression "FUN_001dcf00()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar4;" return identifier ;) })))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < LIT) )) ;) (labeled_statement statement_identifier : (expression_statement ;)) }) while (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (char_literal ' character ')) && (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) ))) < LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( BOOL )) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })))) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_001dd680(int param_1,int param_2)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  int iVar3;\n  undefined4 uVar4;\n  char cVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_001dd680(int param_1,int param_2)" (identifier "FUN_001dd680") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  char *pcVar2;\n  int iVar3;\n  undefined4 uVar4;\n  char cVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }\n  return 0;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (*pcVar2 == '_') {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(*pcVar2 == '_')" (( "(") (binary_expression "*pcVar2 == '_'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }\n  }" ({ "{") (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pcVar2[1] == 'Z') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }" (if "if") (parenthesized_expression "(pcVar2[1] == 'Z')" (( "(") (binary_expression "pcVar2[1] == 'Z'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'Z'" (' "'") (character "Z") (' "'"))) () ")")) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      uVar4 = FUN_001dcf00();\n      if (param_2 == 0) {\n        return uVar4;\n      }\n      if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }\n      pcVar2 = *(char **)(param_1 + 0xc);\n      if (*pcVar2 != '.') {\n        return uVar4;\n      }\n      cVar5 = pcVar2[1];\n      do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );\n    }" ({ "{") (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar4 = FUN_001dcf00();" (assignment_expression "uVar4 = FUN_001dcf00()" (identifier "uVar4") (= "=") (call_expression "FUN_001dcf00()" (identifier "FUN_001dcf00") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (param_2 == 0) {\n        return uVar4;\n      }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return uVar4;\n      }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 8) & 1) == 0) {\n        return uVar4;\n      }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 8) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 8) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 8) & 1" (pointer_expression "*(byte *)(param_1 + 8)" (* "*") (cast_expression "(byte *)(param_1 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return uVar4;\n      }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (*pcVar2 != '.') {\n        return uVar4;\n      }" (if "if") (parenthesized_expression "(*pcVar2 != '.')" (( "(") (binary_expression "*pcVar2 != '.'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (!= "!=") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (compound_statement "{\n        return uVar4;\n      }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "cVar5 = pcVar2[1];" (assignment_expression "cVar5 = pcVar2[1]" (identifier "cVar5") (= "=") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (do_statement "do {\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      } while( true );" (do "do") (compound_statement "{\n        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }\n        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }\n        *(char **)(param_1 + 0xc) = pcVar7;\n        iVar3 = *(int *)(param_1 + 0x14);\n        if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }\n        uVar4 = FUN_001d44f0(puVar6);\n        pcVar2 = *(char **)(param_1 + 0xc);\n        if (*pcVar2 != '.') {\n          return uVar4;\n        }\n        cVar5 = pcVar2[1];\n      }" ({ "{") (if_statement "if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }\n        else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" (if "if") (parenthesized_expression "(((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_'))" (( "(") (binary_expression "((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')" (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 0x1a)" (( "(") (binary_expression "(byte)(cVar5 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 + 0x9fU)" (( "(") (binary_expression "cVar5 + 0x9fU" (identifier "cVar5") (+ "+") (number_literal "0x9fU")) () ")"))) (< "<") (number_literal "0x1a")) () ")")) (|| "||") (parenthesized_expression "(cVar5 == '_')" (( "(") (binary_expression "cVar5 == '_'" (identifier "cVar5") (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")"))) () ")")) (compound_statement "{\n          cVar5 = pcVar2[2];\n          pcVar7 = pcVar2 + 2;\n          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;\n          do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');\n        }" ({ "{") (expression_statement "cVar5 = pcVar2[2];" (assignment_expression "cVar5 = pcVar2[2]" (identifier "cVar5") (= "=") (subscript_expression "pcVar2[2]" (identifier "pcVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pcVar7 = pcVar2 + 2;" (assignment_expression "pcVar7 = pcVar2 + 2" (identifier "pcVar7") (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;" (if "if") (parenthesized_expression "(0x19 < (byte)(cVar5 + 0x9fU))" (( "(") (binary_expression "0x19 < (byte)(cVar5 + 0x9fU)" (number_literal "0x19") (< "<") (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 + 0x9fU)" (( "(") (binary_expression "cVar5 + 0x9fU" (identifier "cVar5") (+ "+") (number_literal "0x9fU")) () ")")))) () ")")) (goto_statement "goto LAB_001dd7ff;" (goto "goto") (statement_identifier "LAB_001dd7ff") (; ";"))) (do_statement "do {\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          } while (cVar5 == '_');" (do "do") (compound_statement "{\n            do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);\nLAB_001dd7ff:\n          }" ({ "{") (do_statement "do {\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            } while ((byte)(cVar5 + 0x9fU) < 0x1a);" (do "do") (compound_statement "{\n              pcVar7 = pcVar7 + 1;\n              cVar5 = *pcVar7;\n            }" ({ "{") (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar5 = *pcVar7;" (assignment_expression "cVar5 = *pcVar7" (identifier "cVar5") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 0x1a)" (( "(") (binary_expression "(byte)(cVar5 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 + 0x9fU)" (( "(") (binary_expression "cVar5 + 0x9fU" (identifier "cVar5") (+ "+") (number_literal "0x9fU")) () ")"))) (< "<") (number_literal "0x1a")) () ")")) (; ";")) (labeled_statement "LAB_001dd7ff:" (statement_identifier "LAB_001dd7ff") (: ":") (expression_statement "" (; ""))) (} "}")) (while "while") (parenthesized_expression "(cVar5 == '_')" (( "(") (binary_expression "cVar5 == '_'" (identifier "cVar5") (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (; ";")) (} "}")) (else_clause "else {\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" (else "else") (compound_statement "{\n          if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }\n          cVar5 = *pcVar2;\n          pcVar7 = pcVar2;\n        }" ({ "{") (if_statement "if (9 < (byte)(cVar5 - 0x30U)) {\n            return uVar4;\n          }" (if "if") (parenthesized_expression "(9 < (byte)(cVar5 - 0x30U))" (( "(") (binary_expression "9 < (byte)(cVar5 - 0x30U)" (number_literal "9") (< "<") (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 - 0x30U)" (( "(") (binary_expression "cVar5 - 0x30U" (identifier "cVar5") (- "-") (number_literal "0x30U")) () ")")))) () ")")) (compound_statement "{\n            return uVar4;\n          }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "cVar5 = *pcVar2;" (assignment_expression "cVar5 = *pcVar2" (identifier "cVar5") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (expression_statement "pcVar7 = pcVar2;" (assignment_expression "pcVar7 = pcVar2" (identifier "pcVar7") (= "=") (identifier "pcVar2")) (; ";")) (} "}")))) (while_statement "while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }" (while "while") (parenthesized_expression "((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10)))" (( "(") (parenthesized_expression "(cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))" (( "(") (binary_expression "cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10)" (binary_expression "cVar5 == '.'" (identifier "cVar5") (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) (&& "&&") (parenthesized_expression "((byte)(pcVar7[1] - 0x30U) < 10)" (( "(") (binary_expression "(byte)(pcVar7[1] - 0x30U) < 10" (call_expression "(byte)(pcVar7[1] - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(pcVar7[1] - 0x30U)" (( "(") (binary_expression "pcVar7[1] - 0x30U" (subscript_expression "pcVar7[1]" (identifier "pcVar7") ([ "[") (number_literal "1") (] "]")) (- "-") (number_literal "0x30U")) () ")"))) (< "<") (number_literal "10")) () ")"))) () ")")) () ")")) (compound_statement "{\n          pcVar1 = pcVar7 + 2;\n          pcVar7 = pcVar7 + 2;\n          cVar5 = *pcVar1;\n          while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }\n        }" ({ "{") (expression_statement "pcVar1 = pcVar7 + 2;" (assignment_expression "pcVar1 = pcVar7 + 2" (identifier "pcVar1") (= "=") (binary_expression "pcVar7 + 2" (identifier "pcVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + 2;" (assignment_expression "pcVar7 = pcVar7 + 2" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + 2" (identifier "pcVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "cVar5 = *pcVar1;" (assignment_expression "cVar5 = *pcVar1" (identifier "cVar5") (= "=") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1"))) (; ";")) (while_statement "while ((byte)(cVar5 - 0x30U) < 10) {\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }" (while "while") (parenthesized_expression "((byte)(cVar5 - 0x30U) < 10)" (( "(") (binary_expression "(byte)(cVar5 - 0x30U) < 10" (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 - 0x30U)" (( "(") (binary_expression "cVar5 - 0x30U" (identifier "cVar5") (- "-") (number_literal "0x30U")) () ")"))) (< "<") (number_literal "10")) () ")")) (compound_statement "{\n            pcVar7 = pcVar7 + 1;\n            cVar5 = *pcVar7;\n          }" ({ "{") (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar5 = *pcVar7;" (assignment_expression "cVar5 = *pcVar7" (identifier "cVar5") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(char **)(param_1 + 0xc) = pcVar7;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar7" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "pcVar7")) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x14)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar3 < *(int *)(param_1 + 0x18)) {\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }\n        else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" (if "if") (parenthesized_expression "(iVar3 < *(int *)(param_1 + 0x18))" (( "(") (binary_expression "iVar3 < *(int *)(param_1 + 0x18)" (identifier "iVar3") (< "<") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));\n          puVar6[1] = 0;\n          *(int *)(param_1 + 0x14) = iVar3 + 1;\n          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;\n          puVar6[1] = 0;\n          *puVar6 = 0;\n          puVar6[2] = pcVar2;\n          puVar6[3] = (int)pcVar7 - (int)pcVar2;\n        }" ({ "{") (expression_statement "puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 * 0x10 + *(int *)(param_1 + 0x10))" (( "(") (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar3 * 0x10" (identifier "iVar3") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x14) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;" (if "if") (parenthesized_expression "((int)pcVar7 - (int)pcVar2 == 0)" (( "(") (binary_expression "(int)pcVar7 - (int)pcVar2 == 0" (binary_expression "(int)pcVar7 - (int)pcVar2" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2"))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001dd810;" (goto "goto") (statement_identifier "LAB_001dd810") (; ";"))) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[2] = pcVar2;" (assignment_expression "puVar6[2] = pcVar2" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "pcVar2")) (; ";")) (expression_statement "puVar6[3] = (int)pcVar7 - (int)pcVar2;" (assignment_expression "puVar6[3] = (int)pcVar7 - (int)pcVar2" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "(int)pcVar7 - (int)pcVar2" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2")))) (; ";")) (} "}")) (else_clause "else {\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" (else "else") (compound_statement "{\nLAB_001dd810:\n          puVar6 = (undefined4 *)0x0;\n        }" ({ "{") (labeled_statement "LAB_001dd810:\n          puVar6 = (undefined4 *)0x0;" (statement_identifier "LAB_001dd810") (: ":") (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")))) (expression_statement "uVar4 = FUN_001d44f0(puVar6);" (assignment_expression "uVar4 = FUN_001d44f0(puVar6)" (identifier "uVar4") (= "=") (call_expression "FUN_001d44f0(puVar6)" (identifier "FUN_001d44f0") (argument_list "(puVar6)" (( "(") (identifier "puVar6") () ")")))) (; ";")) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (*pcVar2 != '.') {\n          return uVar4;\n        }" (if "if") (parenthesized_expression "(*pcVar2 != '.')" (( "(") (binary_expression "*pcVar2 != '.'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (!= "!=") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (compound_statement "{\n          return uVar4;\n        }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "cVar5 = pcVar2[1];" (assignment_expression "cVar5 = pcVar2[1]" (identifier "cVar5") (= "=") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" (else "else") (if_statement "if ((param_2 == 0) && (*pcVar2 == 'Z')) {\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" (if "if") (parenthesized_expression "((param_2 == 0) && (*pcVar2 == 'Z'))" (( "(") (binary_expression "(param_2 == 0) && (*pcVar2 == 'Z')" (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*pcVar2 == 'Z')" (( "(") (binary_expression "*pcVar2 == 'Z'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'Z'" (' "'") (character "Z") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    uVar4 = FUN_001dcf00();\n    return uVar4;\n  }" ({ "{") (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = FUN_001dcf00();" (assignment_expression "uVar4 = FUN_001dcf00()" (identifier "uVar4") (= "=") (call_expression "FUN_001dcf00()" (identifier "FUN_001dcf00") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Unknown calling convention */

type_1 * function_1(type_2 *di,int var_3)

{
  type_3 var_5;
  char *var_1;
  type_1 *pdVar3;
  int var_10;
  type_4 *pdVar5;
  type_1 *pdVar6;
  type_5 var_6;
  type_1 *pdVar8;
  type_1 *right;
  
  var_1 = di->n;
  if (*var_1 == '_') {
    di->n = var_1 + 1;
    if (var_1[1] == 'Z') {
      di->n = var_1 + 2;
      pdVar6 = var_2(di,var_3);
      if (var_3 == 0) {
        return pdVar6;
      }
      if ((di->options & 1) == 0) {
        return pdVar6;
      }
      pdVar3 = (type_1 *)di->n;
      if ((char)pdVar3->type != var_4) {
        return pdVar6;
      }
      var_5 = *(type_3 *)((int)&pdVar3->type + 1);
      do {
        if (((type_3)(var_5 + 0x9f) < 0x1a) || (var_5 == 0x5f)) {
          var_6 = *(type_3 *)((int)&pdVar3->type + 2);
          pdVar8 = (type_1 *)((int)&pdVar3->type + 2);
          if (0x19 < (type_3)(var_6 + 0x9f)) goto LAB_001dd7ff;
          do {
            do {
              pdVar8 = (type_1 *)((int)&pdVar8->type + 1);
              var_6 = (type_5)pdVar8->type;
            } while ((type_3)(var_6 + 0x9f) < 0x1a);
LAB_001dd7ff:
          } while (var_6 == (var_7|var_8));
        }
        else {
          if (9 < (type_3)(var_5 - 0x30)) {
            return pdVar6;
          }
          var_6 = (type_5)pdVar3->type;
          pdVar8 = pdVar3;
        }
        while ((var_6 == var_4 &&
               ((type_3)(*(type_3 *)((int)&pdVar8->type + 1) - 0x30) < 10))) {
          pdVar5 = &pdVar8->type;
          pdVar8 = (type_1 *)((int)&pdVar8->type + 2);
          var_6 = *(type_3 *)((int)pdVar5 + 2);
          while ((type_3)(var_6 - var_9) < 10) {
            pdVar8 = (type_1 *)((int)&pdVar8->type + 1);
            var_6 = (type_5)pdVar8->type;
          }
        }
        di->n = (char *)pdVar8;
        var_10 = di->next_comp;
        if (var_10 < di->num_comps) {
          right = di->comps + var_10;
          right->d_printing = 0;
          di->next_comp = var_10 + 1;
          if ((type_1 *)((int)pdVar8 - (int)pdVar3) == (type_1 *)0x0)
          goto LAB_001dd810;
          right->d_printing = 0;
          right->type = DEMANGLE_COMPONENT_NAME;
          (right->u).s_fixed.length = pdVar3;
          (right->u).s_extended_operator.name = (type_1 *)((int)pdVar8 - (int)pdVar3);
        }
        else {
LAB_001dd810:
          right = (type_1 *)0x0;
        }
        pdVar6 = var_11(di,DEMANGLE_COMPONENT_CLONE,pdVar6,right);
        pdVar3 = (type_1 *)di->n;
        if ((char)pdVar3->type != var_4) {
          return pdVar6;
        }
        var_5 = *(type_3 *)((int)&pdVar3->type + 1);
      } while( true );
    }
  }
  else if ((var_3 == 0) && (*var_1 == 'Z')) {
    di->n = var_1 + 1;
    pdVar6 = var_2(di,0);
    return pdVar6;
  }
  return (type_1 *)0x0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (MISSING ";")))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (char_literal (character))) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (number_literal)))))) body: (compound_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: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (while_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) condition: (parenthesized_expression (true)))))) alternative: (else_clause (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: (identifier)) right: (char_literal (character)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (return_statement (identifier)))))) (return_statement (number_literal)))))

undefined4 MASKED(int param_1,int param_2)

{
  char *pcVar1;
  char *pcVar2;
  int iVar3;
  undefined4 uVar4;
  char cVar5;
  undefined4 *puVar6;
  char *pcVar7;
  
  pcVar2 = *(char **)(param_1 + 0xc);
  if (*pcVar2 == '_') {
    *(char **)(param_1 + 0xc) = pcVar2 + 1;
    if (pcVar2[1] == 'Z') {
      *(char **)(param_1 + 0xc) = pcVar2 + 2;
      uVar4 = FUN_001dcf00();
      if (param_2 == 0) {
        return uVar4;
      }
      if ((*(byte *)(param_1 + 8) & 1) == 0) {
        return uVar4;
      }
      pcVar2 = *(char **)(param_1 + 0xc);
      if (*pcVar2 != '.') {
        return uVar4;
      }
      cVar5 = pcVar2[1];
      do {
        if (((byte)(cVar5 + 0x9fU) < 0x1a) || (cVar5 == '_')) {
          cVar5 = pcVar2[2];
          pcVar7 = pcVar2 + 2;
          if (0x19 < (byte)(cVar5 + 0x9fU)) goto LAB_001dd7ff;
          do {
            do {
              pcVar7 = pcVar7 + 1;
              cVar5 = *pcVar7;
            } while ((byte)(cVar5 + 0x9fU) < 0x1a);
LAB_001dd7ff:
          } while (cVar5 == '_');
        }
        else {
          if (9 < (byte)(cVar5 - 0x30U)) {
            return uVar4;
          }
          cVar5 = *pcVar2;
          pcVar7 = pcVar2;
        }
        while ((cVar5 == '.' && ((byte)(pcVar7[1] - 0x30U) < 10))) {
          pcVar1 = pcVar7 + 2;
          pcVar7 = pcVar7 + 2;
          cVar5 = *pcVar1;
          while ((byte)(cVar5 - 0x30U) < 10) {
            pcVar7 = pcVar7 + 1;
            cVar5 = *pcVar7;
          }
        }
        *(char **)(param_1 + 0xc) = pcVar7;
        iVar3 = *(int *)(param_1 + 0x14);
        if (iVar3 < *(int *)(param_1 + 0x18)) {
          puVar6 = (undefined4 *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10));
          puVar6[1] = 0;
          *(int *)(param_1 + 0x14) = iVar3 + 1;
          if ((int)pcVar7 - (int)pcVar2 == 0) goto LAB_001dd810;
          puVar6[1] = 0;
          *puVar6 = 0;
          puVar6[2] = pcVar2;
          puVar6[3] = (int)pcVar7 - (int)pcVar2;
        }
        else {
LAB_001dd810:
          puVar6 = (undefined4 *)0x0;
        }
        uVar4 = FUN_001d44f0(puVar6);
        pcVar2 = *(char **)(param_1 + 0xc);
        if (*pcVar2 != '.') {
          return uVar4;
        }
        cVar5 = pcVar2[1];
      } while( true );
    }
  }
  else if ((param_2 == 0) && (*pcVar2 == 'Z')) {
    *(char **)(param_1 + 0xc) = pcVar2 + 1;
    uVar4 = FUN_001dcf00();
    return uVar4;
  }
  return 0;
}

