
demangle_component * cplus_demangle_mangled_name(d_info *di,int top_level)

{
  byte bVar1;
  int iVar2;
  char *pcVar3;
  demangle_component *pdVar4;
  demangle_component_type *pdVar5;
  demangle_component *pdVar6;
  demangle_component *pdVar7;
  undefined1 uVar8;
  int iVar9;
  
  pcVar3 = di->n;
  if (*pcVar3 == '_') {
    di->n = pcVar3 + 1;
    if (pcVar3[1] == 'Z') {
      di->n = pcVar3 + 2;
      pdVar6 = d_encoding(di,top_level);
      if ((top_level != 0) && ((di->options & 1) != 0)) {
        while (pdVar4 = (demangle_component *)di->n,
              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {
          bVar1 = *(byte *)((long)&pdVar4->type + 1);
          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {
            uVar8 = *(byte *)((long)&pdVar4->type + 2);
            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);
            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;
            do {
              do {
                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);
                uVar8 = (undefined1)pdVar7->type;
              } while ((byte)(uVar8 + 0x9f) < 0x1a);
LAB_002d1b0f:
            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));
          }
          else {
            if (9 < (byte)(bVar1 - 0x30)) {
              return pdVar6;
            }
            uVar8 = (undefined1)pdVar4->type;
            pdVar7 = pdVar4;
          }
          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&
                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {
            pdVar5 = &pdVar7->type;
            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);
            uVar8 = *(byte *)((long)pdVar5 + 2);
            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {
              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);
              uVar8 = (undefined1)pdVar7->type;
            }
          }
          di->n = (char *)pdVar7;
          iVar2 = di->next_comp;
          iVar9 = (int)pdVar7 - (int)pdVar4;
          if (iVar2 < di->num_comps) {
            pdVar7 = di->comps + iVar2;
            pdVar7->d_printing = 0;
            di->next_comp = iVar2 + 1;
            if (iVar9 == 0) goto LAB_002d1ae0;
            pdVar7->type = DEMANGLE_COMPONENT_NAME;
            pdVar7->d_printing = 0;
            (pdVar7->u).s_fixed.length = pdVar4;
            (pdVar7->u).s_name.len = iVar9;
          }
          else {
LAB_002d1ae0:
            pdVar7 = (demangle_component *)0x0;
          }
          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);
        }
      }
      return pdVar6;
    }
  }
  else if ((top_level == 0) && (*pcVar3 == 'Z')) {
    di->n = pcVar3 + 1;
    pdVar6 = d_encoding(di,0);
    return pdVar6;
  }
  return (demangle_component *)0x0;
}



undefined8 FUN_002d1990(long param_1,int param_2)

{
  char *pcVar1;
  int iVar2;
  char *pcVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  char cVar6;
  int iVar7;
  char *pcVar8;
  
  pcVar3 = *(char **)(param_1 + 0x18);
  if (*pcVar3 == '_') {
    *(char **)(param_1 + 0x18) = pcVar3 + 1;
    if (pcVar3[1] == 'Z') {
      *(char **)(param_1 + 0x18) = pcVar3 + 2;
      uVar4 = FUN_002d12a0();
      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {
        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {
          cVar6 = pcVar3[1];
          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {
            cVar6 = pcVar3[2];
            pcVar8 = pcVar3 + 2;
            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;
            do {
              do {
                pcVar8 = pcVar8 + 1;
                cVar6 = *pcVar8;
              } while ((byte)(cVar6 + 0x9fU) < 0x1a);
LAB_002d1b0f:
            } while (cVar6 == '_');
          }
          else {
            if (9 < (byte)(cVar6 - 0x30U)) {
              return uVar4;
            }
            cVar6 = *pcVar3;
            pcVar8 = pcVar3;
          }
          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {
            pcVar1 = pcVar8 + 2;
            pcVar8 = pcVar8 + 2;
            cVar6 = *pcVar1;
            while ((byte)(cVar6 - 0x30U) < 10) {
              pcVar8 = pcVar8 + 1;
              cVar6 = *pcVar8;
            }
          }
          *(char **)(param_1 + 0x18) = pcVar8;
          iVar2 = *(int *)(param_1 + 0x28);
          iVar7 = (int)pcVar8 - (int)pcVar3;
          if (iVar2 < *(int *)(param_1 + 0x2c)) {
            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);
            *(undefined4 *)((long)puVar5 + 4) = 0;
            *(int *)(param_1 + 0x28) = iVar2 + 1;
            if (iVar7 == 0) goto LAB_002d1ae0;
            *puVar5 = 0;
            puVar5[1] = pcVar3;
            *(int *)(puVar5 + 2) = iVar7;
          }
          else {
LAB_002d1ae0:
            puVar5 = (undefined8 *)0x0;
          }
          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);
        }
      }
      return uVar4;
    }
  }
  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {
    *(char **)(param_1 + 0x18) = pcVar3 + 1;
    uVar4 = FUN_002d12a0(param_1,0);
    return uVar4;
  }
  return 0;
}


MOV RAX,qword ptr [RDI + 0x18]
MOVZX EDX,byte ptr [RAX]
CMP DL,0x5f
JZ 0x002d19c0
TEST ESI,ESI
JNZ 0x002d19a5
CMP DL,0x5a
JZ 0x002d19b0
XOR EAX,EAX
RET
ADD RAX,0x1
XOR ESI,ESI
MOV qword ptr [RDI + 0x18],RAX
JMP 0x002d12a0
LEA RDX,[RAX + 0x1]
MOV qword ptr [RDI + 0x18],RDX
CMP byte ptr [RAX + 0x1],0x5a
JNZ 0x002d19a5
PUSH RBP
ADD RAX,0x2
MOV EBP,ESI
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
MOV qword ptr [RDI + 0x18],RAX
CALL 0x002d12a0
TEST EBP,EBP
JZ 0x002d1ad8
TEST byte ptr [RBX + 0x10],0x1
JZ 0x002d1ad8
NOP dword ptr [RAX + RAX*0x1]
MOV RDI,qword ptr [RBX + 0x18]
CMP byte ptr [RDI],0x2e
JNZ 0x002d1ad8
MOVZX ECX,byte ptr [RDI + 0x1]
LEA EDX,[RCX + -0x61]
CMP DL,0x19
JBE 0x002d1ae8
CMP CL,0x5f
JZ 0x002d1ae8
SUB ECX,0x30
CMP CL,0x9
JA 0x002d1ad8
MOVZX ESI,byte ptr [RDI]
MOV RCX,RDI
CMP SIL,0x2e
JNZ 0x002d1a79
NOP
MOVZX EDX,byte ptr [RCX + 0x1]
LEA ESI,[RDX + -0x30]
CMP SIL,0x9
JA 0x002d1a79
MOVZX ESI,byte ptr [RCX + 0x2]
LEA R8,[RCX + 0x2]
LEA EDX,[RSI + -0x30]
CMP DL,0x9
JA 0x002d1a70
NOP dword ptr [RAX]
ADD R8,0x1
MOVZX ESI,byte ptr [R8]
LEA EDX,[RSI + -0x30]
CMP DL,0x9
JBE 0x002d1a60
MOV RCX,R8
CMP SIL,0x2e
JZ 0x002d1a40
MOV RSI,RCX
MOV qword ptr [RBX + 0x18],RCX
MOV R8D,dword ptr [RBX + 0x28]
SUB RSI,RDI
CMP R8D,dword ptr [RBX + 0x2c]
JGE 0x002d1ae0
MOVSXD RDX,R8D
ADD R8D,0x1
LEA RCX,[RDX + RDX*0x2]
MOV RDX,qword ptr [RBX + 0x20]
LEA RCX,[RDX + RCX*0x8]
MOV dword ptr [RCX + 0x4],0x0
MOV dword ptr [RBX + 0x28],R8D
TEST ESI,ESI
JZ 0x002d1ae0
MOV qword ptr [RCX],0x0
MOV qword ptr [RCX + 0x8],RDI
MOV dword ptr [RCX + 0x10],ESI
MOV RDX,RAX
MOV ESI,0x4d
MOV RDI,RBX
CALL 0x002c91b0
JMP 0x002d1a00
ADD RSP,0x8
POP RBX
POP RBP
RET
XOR ECX,ECX
JMP 0x002d1abd
MOVZX ESI,byte ptr [RDI + 0x2]
LEA RCX,[RDI + 0x2]
LEA EDX,[RSI + -0x61]
CMP DL,0x19
JA 0x002d1b0f
NOP dword ptr [RAX + RAX*0x1]
ADD RCX,0x1
MOVZX ESI,byte ptr [RCX]
LEA EDX,[RSI + -0x61]
CMP DL,0x19
JBE 0x002d1b00
CMP SIL,0x5f
JZ 0x002d1b00
JMP 0x002d1a38
(translation_unit "undefined8 FUN_002d1990(long param_1,int param_2)\n\n{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  char cVar6;\n  int iVar7;\n  char *pcVar8;\n  \n  pcVar3 = *(char **)(param_1 + 0x18);\n  if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_002d1990(long param_1,int param_2)\n\n{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  char cVar6;\n  int iVar7;\n  char *pcVar8;\n  \n  pcVar3 = *(char **)(param_1 + 0x18);\n  if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_002d1990(long param_1,int param_2)" identifier (parameter_list "(long param_1,int param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  char cVar6;\n  int iVar7;\n  char *pcVar8;\n  \n  pcVar3 = *(char **)(param_1 + 0x18);\n  if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (expression_statement "pcVar3 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" if (parenthesized_expression "(*pcVar3 == '_')" ( (binary_expression "*pcVar3 == '_'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }" if (parenthesized_expression "(pcVar3[1] == 'Z')" ( (binary_expression "pcVar3[1] == 'Z'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) == (char_literal "'Z'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar3 + 2" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_002d12a0();" (assignment_expression "uVar4 = FUN_002d12a0()" identifier = (call_expression "FUN_002d12a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }" if (parenthesized_expression "((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0))" ( (binary_expression "(param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x10) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x10) & 1" (pointer_expression "*(byte *)(param_1 + 0x10)" * (cast_expression "(byte *)(param_1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }" { (while_statement "while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }" while (parenthesized_expression "(pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.')" ( (comma_expression "pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.'" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) , (binary_expression "*pcVar3 == '.'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'.'" ' character '))) )) (compound_statement "{\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }" { (expression_statement "cVar6 = pcVar3[1];" (assignment_expression "cVar6 = pcVar3[1]" identifier = (subscript_expression "pcVar3[1]" identifier [ number_literal ])) ;) (if_statement "if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" if (parenthesized_expression "(((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_'))" ( (binary_expression "((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')" (parenthesized_expression "((byte)(cVar6 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar6 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 + 0x9fU)" ( (binary_expression "cVar6 + 0x9fU" identifier + number_literal) ))) < number_literal) )) || (parenthesized_expression "(cVar6 == '_')" ( (binary_expression "cVar6 == '_'" identifier == (char_literal "'_'" ' character ')) ))) )) (compound_statement "{\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }" { (expression_statement "cVar6 = pcVar3[2];" (assignment_expression "cVar6 = pcVar3[2]" identifier = (subscript_expression "pcVar3[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar8 = pcVar3 + 2;" (assignment_expression "pcVar8 = pcVar3 + 2" identifier = (binary_expression "pcVar3 + 2" identifier + number_literal)) ;) (if_statement "if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;" if (parenthesized_expression "(0x19 < (byte)(cVar6 + 0x9fU))" ( (binary_expression "0x19 < (byte)(cVar6 + 0x9fU)" number_literal < (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 + 0x9fU)" ( (binary_expression "cVar6 + 0x9fU" identifier + number_literal) )))) )) (goto_statement "goto LAB_002d1b0f;" goto statement_identifier ;)) (do_statement "do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');" do (compound_statement "{\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            }" { (do_statement "do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);" do (compound_statement "{\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              }" { (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar6 = *pcVar8;" (assignment_expression "cVar6 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) }) while (parenthesized_expression "((byte)(cVar6 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar6 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 + 0x9fU)" ( (binary_expression "cVar6 + 0x9fU" identifier + number_literal) ))) < number_literal) )) ;) (labeled_statement "LAB_002d1b0f:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(cVar6 == '_')" ( (binary_expression "cVar6 == '_'" identifier == (char_literal "'_'" ' character ')) )) ;) }) (else_clause "else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" else (compound_statement "{\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" { (if_statement "if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }" if (parenthesized_expression "(9 < (byte)(cVar6 - 0x30U))" ( (binary_expression "9 < (byte)(cVar6 - 0x30U)" number_literal < (call_expression "(byte)(cVar6 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 - 0x30U)" ( (binary_expression "cVar6 - 0x30U" identifier - number_literal) )))) )) (compound_statement "{\n              return uVar4;\n            }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "cVar6 = *pcVar3;" (assignment_expression "cVar6 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) ;) (expression_statement "pcVar8 = pcVar3;" (assignment_expression "pcVar8 = pcVar3" identifier = identifier) ;) }))) (while_statement "while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }" while (parenthesized_expression "((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10)))" ( (parenthesized_expression "(cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))" ( (binary_expression "cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10)" (binary_expression "cVar6 == '.'" identifier == (char_literal "'.'" ' character ')) && (parenthesized_expression "((byte)(pcVar8[1] - 0x30U) < 10)" ( (binary_expression "(byte)(pcVar8[1] - 0x30U) < 10" (call_expression "(byte)(pcVar8[1] - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pcVar8[1] - 0x30U)" ( (binary_expression "pcVar8[1] - 0x30U" (subscript_expression "pcVar8[1]" identifier [ number_literal ]) - number_literal) ))) < number_literal) ))) )) )) (compound_statement "{\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }" { (expression_statement "pcVar1 = pcVar8 + 2;" (assignment_expression "pcVar1 = pcVar8 + 2" identifier = (binary_expression "pcVar8 + 2" identifier + number_literal)) ;) (expression_statement "pcVar8 = pcVar8 + 2;" (assignment_expression "pcVar8 = pcVar8 + 2" identifier = (binary_expression "pcVar8 + 2" identifier + number_literal)) ;) (expression_statement "cVar6 = *pcVar1;" (assignment_expression "cVar6 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (while_statement "while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }" while (parenthesized_expression "((byte)(cVar6 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar6 - 0x30U) < 10" (call_expression "(byte)(cVar6 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 - 0x30U)" ( (binary_expression "cVar6 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }" { (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar6 = *pcVar8;" (assignment_expression "cVar6 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) })) })) (expression_statement "*(char **)(param_1 + 0x18) = pcVar8;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar8" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = (int)pcVar8 - (int)pcVar3;" (assignment_expression "iVar7 = (int)pcVar8 - (int)pcVar3" identifier = (binary_expression "(int)pcVar8 - (int)pcVar3" (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" if (parenthesized_expression "(iVar2 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar2 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }" { (expression_statement "puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);" (assignment_expression "puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" identifier = (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar2 * 0x18" (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "*(undefined4 *)((long)puVar5 + 4) = 0;" (assignment_expression "*(undefined4 *)((long)puVar5 + 4) = 0" (pointer_expression "*(undefined4 *)((long)puVar5 + 4)" * (cast_expression "(undefined4 *)((long)puVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 4)" ( (binary_expression "(long)puVar5 + 4" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar2 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar2 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 == 0) goto LAB_002d1ae0;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d1ae0;" goto statement_identifier ;)) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5[1] = pcVar3;" (assignment_expression "puVar5[1] = pcVar3" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(puVar5 + 2) = iVar7;" (assignment_expression "*(int *)(puVar5 + 2) = iVar7" (pointer_expression "*(int *)(puVar5 + 2)" * (cast_expression "(int *)(puVar5 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" else (compound_statement "{\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" { (labeled_statement "LAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;" statement_identifier : (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (expression_statement "uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);" (assignment_expression "uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5)" identifier = (call_expression "FUN_002c91b0(param_1,0x4d,uVar4,puVar5)" identifier (argument_list "(param_1,0x4d,uVar4,puVar5)" ( identifier , number_literal , identifier , identifier )))) ;) })) })) (return_statement "return uVar4;" return identifier ;) })) }) (else_clause "else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" else (if_statement "if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" if (parenthesized_expression "((param_2 == 0) && (*pcVar3 == 'Z'))" ( (binary_expression "(param_2 == 0) && (*pcVar3 == 'Z')" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) && (parenthesized_expression "(*pcVar3 == 'Z')" ( (binary_expression "*pcVar3 == 'Z'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'Z'" ' character ')) ))) )) (compound_statement "{\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_002d12a0(param_1,0);" (assignment_expression "uVar4 = FUN_002d12a0(param_1,0)" identifier = (call_expression "FUN_002d12a0(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (return_statement "return uVar4;" return identifier ;) })))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "demangle_component * cplus_demangle_mangled_name(d_info *di,int top_level)\n\n{\n  byte bVar1;\n  int iVar2;\n  char *pcVar3;\n  demangle_component *pdVar4;\n  demangle_component_type *pdVar5;\n  demangle_component *pdVar6;\n  demangle_component *pdVar7;\n  undefined1 uVar8;\n  int iVar9;\n  \n  pcVar3 = di->n;\n  if (*pcVar3 == '_') {\n    di->n = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      di->n = pcVar3 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if ((top_level != 0) && ((di->options & 1) != 0)) {\n        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }\n      return pdVar6;\n    }\n  }\n  else if ((top_level == 0) && (*pcVar3 == 'Z')) {\n    di->n = pcVar3 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }\n  return (demangle_component *)0x0;\n}\n\n" (function_definition "demangle_component * cplus_demangle_mangled_name(d_info *di,int top_level)\n\n{\n  byte bVar1;\n  int iVar2;\n  char *pcVar3;\n  demangle_component *pdVar4;\n  demangle_component_type *pdVar5;\n  demangle_component *pdVar6;\n  demangle_component *pdVar7;\n  undefined1 uVar8;\n  int iVar9;\n  \n  pcVar3 = di->n;\n  if (*pcVar3 == '_') {\n    di->n = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      di->n = pcVar3 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if ((top_level != 0) && ((di->options & 1) != 0)) {\n        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }\n      return pdVar6;\n    }\n  }\n  else if ((top_level == 0) && (*pcVar3 == 'Z')) {\n    di->n = pcVar3 + 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  int iVar2;\n  char *pcVar3;\n  demangle_component *pdVar4;\n  demangle_component_type *pdVar5;\n  demangle_component *pdVar6;\n  demangle_component *pdVar7;\n  undefined1 uVar8;\n  int iVar9;\n  \n  pcVar3 = di->n;\n  if (*pcVar3 == '_') {\n    di->n = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      di->n = pcVar3 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if ((top_level != 0) && ((di->options & 1) != 0)) {\n        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }\n      return pdVar6;\n    }\n  }\n  else if ((top_level == 0) && (*pcVar3 == 'Z')) {\n    di->n = pcVar3 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }\n  return (demangle_component *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "demangle_component *pdVar4;" type_identifier (pointer_declarator "*pdVar4" * identifier) ;) (declaration "demangle_component_type *pdVar5;" type_identifier (pointer_declarator "*pdVar5" * identifier) ;) (declaration "demangle_component *pdVar6;" type_identifier (pointer_declarator "*pdVar6" * identifier) ;) (declaration "demangle_component *pdVar7;" type_identifier (pointer_declarator "*pdVar7" * identifier) ;) (declaration "undefined1 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (expression_statement "pcVar3 = di->n;" (assignment_expression "pcVar3 = di->n" identifier = (field_expression "di->n" identifier -> field_identifier)) ;) (if_statement "if (*pcVar3 == '_') {\n    di->n = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      di->n = pcVar3 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if ((top_level != 0) && ((di->options & 1) != 0)) {\n        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }\n      return pdVar6;\n    }\n  }\n  else if ((top_level == 0) && (*pcVar3 == 'Z')) {\n    di->n = pcVar3 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }" if (parenthesized_expression "(*pcVar3 == '_')" ( (binary_expression "*pcVar3 == '_'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n    di->n = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      di->n = pcVar3 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if ((top_level != 0) && ((di->options & 1) != 0)) {\n        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }\n      return pdVar6;\n    }\n  }" { (expression_statement "di->n = pcVar3 + 1;" (assignment_expression "di->n = pcVar3 + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar3[1] == 'Z') {\n      di->n = pcVar3 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if ((top_level != 0) && ((di->options & 1) != 0)) {\n        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }\n      return pdVar6;\n    }" if (parenthesized_expression "(pcVar3[1] == 'Z')" ( (binary_expression "pcVar3[1] == 'Z'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) == (char_literal "'Z'" ' character ')) )) (compound_statement "{\n      di->n = pcVar3 + 2;\n      pdVar6 = d_encoding(di,top_level);\n      if ((top_level != 0) && ((di->options & 1) != 0)) {\n        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }\n      return pdVar6;\n    }" { (expression_statement "di->n = pcVar3 + 2;" (assignment_expression "di->n = pcVar3 + 2" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar3 + 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) && ((di->options & 1) != 0)) {\n        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }" if (parenthesized_expression "((top_level != 0) && ((di->options & 1) != 0))" ( (binary_expression "(top_level != 0) && ((di->options & 1) != 0)" (parenthesized_expression "(top_level != 0)" ( (binary_expression "top_level != 0" identifier != number_literal) )) && (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        while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }\n      }" { (while_statement "while (pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST) {\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }" while (parenthesized_expression "(pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST)" ( (comma_expression "pdVar4 = (demangle_component *)di->n,\n              (char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST" (assignment_expression "pdVar4 = (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))) , (binary_expression "(char)pdVar4->type == DEMANGLE_COMPONENT_ARGLIST" (cast_expression "(char)pdVar4->type" ( (type_descriptor "char" primitive_type) ) (field_expression "pdVar4->type" identifier -> field_identifier)) == identifier)) )) (compound_statement "{\n          bVar1 = *(byte *)((long)&pdVar4->type + 1);\n          if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }\n          while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }\n          di->n = (char *)pdVar7;\n          iVar2 = di->next_comp;\n          iVar9 = (int)pdVar7 - (int)pdVar4;\n          if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }\n          pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);\n        }" { (expression_statement "bVar1 = *(byte *)((long)&pdVar4->type + 1);" (assignment_expression "bVar1 = *(byte *)((long)&pdVar4->type + 1)" identifier = (pointer_expression "*(byte *)((long)&pdVar4->type + 1)" * (cast_expression "(byte *)((long)&pdVar4->type + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar4->type + 1)" ( (binary_expression "(long)&pdVar4->type + 1" (cast_expression "(long)&pdVar4->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar4->type" & (field_expression "pdVar4->type" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (((byte)(bVar1 + 0x9f) < 0x1a) || (bVar1 == 0x5f)) {\n            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }\n          else {\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\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            uVar8 = *(byte *)((long)&pdVar4->type + 2);\n            pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);\n            if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;\n            do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));\n          }" { (expression_statement "uVar8 = *(byte *)((long)&pdVar4->type + 2);" (assignment_expression "uVar8 = *(byte *)((long)&pdVar4->type + 2)" identifier = (pointer_expression "*(byte *)((long)&pdVar4->type + 2)" * (cast_expression "(byte *)((long)&pdVar4->type + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar4->type + 2)" ( (binary_expression "(long)&pdVar4->type + 2" (cast_expression "(long)&pdVar4->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar4->type" & (field_expression "pdVar4->type" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pdVar7 = (demangle_component *)((long)&pdVar4->type + 2);" (assignment_expression "pdVar7 = (demangle_component *)((long)&pdVar4->type + 2)" identifier = (cast_expression "(demangle_component *)((long)&pdVar4->type + 2)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar4->type + 2)" ( (binary_expression "(long)&pdVar4->type + 2" (cast_expression "(long)&pdVar4->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar4->type" & (field_expression "pdVar4->type" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (0x19 < (byte)(uVar8 + 0x9f)) goto LAB_002d1b0f;" if (parenthesized_expression "(0x19 < (byte)(uVar8 + 0x9f))" ( (binary_expression "0x19 < (byte)(uVar8 + 0x9f)" number_literal < (call_expression "(byte)(uVar8 + 0x9f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 + 0x9f)" ( (binary_expression "uVar8 + 0x9f" identifier + number_literal) )))) )) (goto_statement "goto LAB_002d1b0f;" goto statement_identifier ;)) (do_statement "do {\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            } while (uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS));" do (compound_statement "{\n              do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);\nLAB_002d1b0f:\n            }" { (do_statement "do {\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              } while ((byte)(uVar8 + 0x9f) < 0x1a);" do (compound_statement "{\n                pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n                uVar8 = (undefined1)pdVar7->type;\n              }" { (expression_statement "pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);" (assignment_expression "pdVar7 = (demangle_component *)((long)&pdVar7->type + 1)" identifier = (cast_expression "(demangle_component *)((long)&pdVar7->type + 1)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar7->type + 1)" ( (binary_expression "(long)&pdVar7->type + 1" (cast_expression "(long)&pdVar7->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar7->type" & (field_expression "pdVar7->type" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar8 = (undefined1)pdVar7->type;" (assignment_expression "uVar8 = (undefined1)pdVar7->type" identifier = (cast_expression "(undefined1)pdVar7->type" ( (type_descriptor "undefined1" type_identifier) ) (field_expression "pdVar7->type" identifier -> field_identifier))) ;) }) while (parenthesized_expression "((byte)(uVar8 + 0x9f) < 0x1a)" ( (binary_expression "(byte)(uVar8 + 0x9f) < 0x1a" (call_expression "(byte)(uVar8 + 0x9f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 + 0x9f)" ( (binary_expression "uVar8 + 0x9f" identifier + number_literal) ))) < number_literal) )) ;) (labeled_statement "LAB_002d1b0f:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(uVar8 == (DEMANGLE_COMPONENT_CHARACTER|DEMANGLE_COMPONENT_REFERENCE_THIS))" ( (binary_expression "uVar8 == (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            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\n          }" else (compound_statement "{\n            if (9 < (byte)(bVar1 - 0x30)) {\n              return pdVar6;\n            }\n            uVar8 = (undefined1)pdVar4->type;\n            pdVar7 = pdVar4;\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 "uVar8 = (undefined1)pdVar4->type;" (assignment_expression "uVar8 = (undefined1)pdVar4->type" identifier = (cast_expression "(undefined1)pdVar4->type" ( (type_descriptor "undefined1" type_identifier) ) (field_expression "pdVar4->type" identifier -> field_identifier))) ;) (expression_statement "pdVar7 = pdVar4;" (assignment_expression "pdVar7 = pdVar4" identifier = identifier) ;) }))) (while_statement "while ((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))) {\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }" while (parenthesized_expression "((uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10)))" ( (parenthesized_expression "(uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10))" ( (binary_expression "uVar8 == DEMANGLE_COMPONENT_ARGLIST &&\n                 ((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10)" (binary_expression "uVar8 == DEMANGLE_COMPONENT_ARGLIST" identifier == identifier) && (parenthesized_expression "((byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10)" ( (binary_expression "(byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30) < 10" (call_expression "(byte)(*(byte *)((long)&pdVar7->type + 1) - 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(byte *)((long)&pdVar7->type + 1) - 0x30)" ( (binary_expression "*(byte *)((long)&pdVar7->type + 1) - 0x30" (pointer_expression "*(byte *)((long)&pdVar7->type + 1)" * (cast_expression "(byte *)((long)&pdVar7->type + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar7->type + 1)" ( (binary_expression "(long)&pdVar7->type + 1" (cast_expression "(long)&pdVar7->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar7->type" & (field_expression "pdVar7->type" identifier -> field_identifier))) + number_literal) )))) - number_literal) ))) < number_literal) ))) )) )) (compound_statement "{\n            pdVar5 = &pdVar7->type;\n            pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);\n            uVar8 = *(byte *)((long)pdVar5 + 2);\n            while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }\n          }" { (expression_statement "pdVar5 = &pdVar7->type;" (assignment_expression "pdVar5 = &pdVar7->type" identifier = (pointer_expression "&pdVar7->type" & (field_expression "pdVar7->type" identifier -> field_identifier))) ;) (expression_statement "pdVar7 = (demangle_component *)((long)&pdVar7->type + 2);" (assignment_expression "pdVar7 = (demangle_component *)((long)&pdVar7->type + 2)" identifier = (cast_expression "(demangle_component *)((long)&pdVar7->type + 2)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar7->type + 2)" ( (binary_expression "(long)&pdVar7->type + 2" (cast_expression "(long)&pdVar7->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar7->type" & (field_expression "pdVar7->type" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar8 = *(byte *)((long)pdVar5 + 2);" (assignment_expression "uVar8 = *(byte *)((long)pdVar5 + 2)" identifier = (pointer_expression "*(byte *)((long)pdVar5 + 2)" * (cast_expression "(byte *)((long)pdVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pdVar5 + 2)" ( (binary_expression "(long)pdVar5 + 2" (cast_expression "(long)pdVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (while_statement "while ((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10) {\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }" while (parenthesized_expression "((byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10)" ( (binary_expression "(byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST) < 10" (call_expression "(byte)(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST)" ( (binary_expression "uVar8 - DEMANGLE_COMPONENT_INITIALIZER_LIST" identifier - identifier) ))) < number_literal) )) (compound_statement "{\n              pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);\n              uVar8 = (undefined1)pdVar7->type;\n            }" { (expression_statement "pdVar7 = (demangle_component *)((long)&pdVar7->type + 1);" (assignment_expression "pdVar7 = (demangle_component *)((long)&pdVar7->type + 1)" identifier = (cast_expression "(demangle_component *)((long)&pdVar7->type + 1)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar7->type + 1)" ( (binary_expression "(long)&pdVar7->type + 1" (cast_expression "(long)&pdVar7->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar7->type" & (field_expression "pdVar7->type" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar8 = (undefined1)pdVar7->type;" (assignment_expression "uVar8 = (undefined1)pdVar7->type" identifier = (cast_expression "(undefined1)pdVar7->type" ( (type_descriptor "undefined1" type_identifier) ) (field_expression "pdVar7->type" identifier -> field_identifier))) ;) })) })) (expression_statement "di->n = (char *)pdVar7;" (assignment_expression "di->n = (char *)pdVar7" (field_expression "di->n" identifier -> field_identifier) = (cast_expression "(char *)pdVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar2 = di->next_comp;" (assignment_expression "iVar2 = di->next_comp" identifier = (field_expression "di->next_comp" identifier -> field_identifier)) ;) (expression_statement "iVar9 = (int)pdVar7 - (int)pdVar4;" (assignment_expression "iVar9 = (int)pdVar7 - (int)pdVar4" identifier = (binary_expression "(int)pdVar7 - (int)pdVar4" (cast_expression "(int)pdVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pdVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar2 < di->num_comps) {\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }\n          else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }" if (parenthesized_expression "(iVar2 < di->num_comps)" ( (binary_expression "iVar2 < di->num_comps" identifier < (field_expression "di->num_comps" identifier -> field_identifier)) )) (compound_statement "{\n            pdVar7 = di->comps + iVar2;\n            pdVar7->d_printing = 0;\n            di->next_comp = iVar2 + 1;\n            if (iVar9 == 0) goto LAB_002d1ae0;\n            pdVar7->type = DEMANGLE_COMPONENT_NAME;\n            pdVar7->d_printing = 0;\n            (pdVar7->u).s_fixed.length = pdVar4;\n            (pdVar7->u).s_name.len = iVar9;\n          }" { (expression_statement "pdVar7 = di->comps + iVar2;" (assignment_expression "pdVar7 = di->comps + iVar2" identifier = (binary_expression "di->comps + iVar2" (field_expression "di->comps" identifier -> field_identifier) + identifier)) ;) (expression_statement "pdVar7->d_printing = 0;" (assignment_expression "pdVar7->d_printing = 0" (field_expression "pdVar7->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "di->next_comp = iVar2 + 1;" (assignment_expression "di->next_comp = iVar2 + 1" (field_expression "di->next_comp" identifier -> field_identifier) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (if_statement "if (iVar9 == 0) goto LAB_002d1ae0;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d1ae0;" goto statement_identifier ;)) (expression_statement "pdVar7->type = DEMANGLE_COMPONENT_NAME;" (assignment_expression "pdVar7->type = DEMANGLE_COMPONENT_NAME" (field_expression "pdVar7->type" identifier -> field_identifier) = identifier) ;) (expression_statement "pdVar7->d_printing = 0;" (assignment_expression "pdVar7->d_printing = 0" (field_expression "pdVar7->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "(pdVar7->u).s_fixed.length = pdVar4;" (assignment_expression "(pdVar7->u).s_fixed.length = pdVar4" (field_expression "(pdVar7->u).s_fixed.length" (field_expression "(pdVar7->u).s_fixed" (parenthesized_expression "(pdVar7->u)" ( (field_expression "pdVar7->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pdVar7->u).s_name.len = iVar9;" (assignment_expression "(pdVar7->u).s_name.len = iVar9" (field_expression "(pdVar7->u).s_name.len" (field_expression "(pdVar7->u).s_name" (parenthesized_expression "(pdVar7->u)" ( (field_expression "pdVar7->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) }) (else_clause "else {\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }" else (compound_statement "{\nLAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;\n          }" { (labeled_statement "LAB_002d1ae0:\n            pdVar7 = (demangle_component *)0x0;" statement_identifier : (expression_statement "pdVar7 = (demangle_component *)0x0;" (assignment_expression "pdVar7 = (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,pdVar7);" (assignment_expression "pdVar6 = d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7)" identifier = (call_expression "d_make_comp(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7)" identifier (argument_list "(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7)" ( identifier , identifier , identifier , identifier )))) ;) })) })) (return_statement "return pdVar6;" return identifier ;) })) }) (else_clause "else if ((top_level == 0) && (*pcVar3 == 'Z')) {\n    di->n = pcVar3 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }" else (if_statement "if ((top_level == 0) && (*pcVar3 == 'Z')) {\n    di->n = pcVar3 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }" if (parenthesized_expression "((top_level == 0) && (*pcVar3 == 'Z'))" ( (binary_expression "(top_level == 0) && (*pcVar3 == 'Z')" (parenthesized_expression "(top_level == 0)" ( (binary_expression "top_level == 0" identifier == number_literal) )) && (parenthesized_expression "(*pcVar3 == 'Z')" ( (binary_expression "*pcVar3 == 'Z'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'Z'" ' character ')) ))) )) (compound_statement "{\n    di->n = pcVar3 + 1;\n    pdVar6 = d_encoding(di,0);\n    return pdVar6;\n  }" { (expression_statement "di->n = pcVar3 + 1;" (assignment_expression "di->n = pcVar3 + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar3 + 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 "undefined8 FUN_002d1990(long param_1,int param_2)\n\n{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  char cVar6;\n  int iVar7;\n  char *pcVar8;\n  \n  pcVar3 = *(char **)(param_1 + 0x18);\n  if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_002d1990(long param_1,int param_2)\n\n{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  char cVar6;\n  int iVar7;\n  char *pcVar8;\n  \n  pcVar3 = *(char **)(param_1 + 0x18);\n  if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_002d1990(long param_1,int param_2)" identifier (parameter_list "(long param_1,int param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  char cVar6;\n  int iVar7;\n  char *pcVar8;\n  \n  pcVar3 = *(char **)(param_1 + 0x18);\n  if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (expression_statement "pcVar3 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" if (parenthesized_expression "(*pcVar3 == '_')" ( (binary_expression "*pcVar3 == '_'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }" if (parenthesized_expression "(pcVar3[1] == 'Z')" ( (binary_expression "pcVar3[1] == 'Z'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) == (char_literal "'Z'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar3 + 2" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_002d12a0();" (assignment_expression "uVar4 = FUN_002d12a0()" identifier = (call_expression "FUN_002d12a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }" if (parenthesized_expression "((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0))" ( (binary_expression "(param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x10) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x10) & 1" (pointer_expression "*(byte *)(param_1 + 0x10)" * (cast_expression "(byte *)(param_1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }" { (while_statement "while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }" while (parenthesized_expression "(pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.')" ( (comma_expression "pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.'" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) , (binary_expression "*pcVar3 == '.'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'.'" ' character '))) )) (compound_statement "{\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }" { (expression_statement "cVar6 = pcVar3[1];" (assignment_expression "cVar6 = pcVar3[1]" identifier = (subscript_expression "pcVar3[1]" identifier [ number_literal ])) ;) (if_statement "if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" if (parenthesized_expression "(((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_'))" ( (binary_expression "((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')" (parenthesized_expression "((byte)(cVar6 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar6 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 + 0x9fU)" ( (binary_expression "cVar6 + 0x9fU" identifier + number_literal) ))) < number_literal) )) || (parenthesized_expression "(cVar6 == '_')" ( (binary_expression "cVar6 == '_'" identifier == (char_literal "'_'" ' character ')) ))) )) (compound_statement "{\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }" { (expression_statement "cVar6 = pcVar3[2];" (assignment_expression "cVar6 = pcVar3[2]" identifier = (subscript_expression "pcVar3[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar8 = pcVar3 + 2;" (assignment_expression "pcVar8 = pcVar3 + 2" identifier = (binary_expression "pcVar3 + 2" identifier + number_literal)) ;) (if_statement "if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;" if (parenthesized_expression "(0x19 < (byte)(cVar6 + 0x9fU))" ( (binary_expression "0x19 < (byte)(cVar6 + 0x9fU)" number_literal < (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 + 0x9fU)" ( (binary_expression "cVar6 + 0x9fU" identifier + number_literal) )))) )) (goto_statement "goto LAB_002d1b0f;" goto statement_identifier ;)) (do_statement "do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');" do (compound_statement "{\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            }" { (do_statement "do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);" do (compound_statement "{\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              }" { (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar6 = *pcVar8;" (assignment_expression "cVar6 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) }) while (parenthesized_expression "((byte)(cVar6 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar6 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 + 0x9fU)" ( (binary_expression "cVar6 + 0x9fU" identifier + number_literal) ))) < number_literal) )) ;) (labeled_statement "LAB_002d1b0f:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(cVar6 == '_')" ( (binary_expression "cVar6 == '_'" identifier == (char_literal "'_'" ' character ')) )) ;) }) (else_clause "else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" else (compound_statement "{\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" { (if_statement "if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }" if (parenthesized_expression "(9 < (byte)(cVar6 - 0x30U))" ( (binary_expression "9 < (byte)(cVar6 - 0x30U)" number_literal < (call_expression "(byte)(cVar6 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 - 0x30U)" ( (binary_expression "cVar6 - 0x30U" identifier - number_literal) )))) )) (compound_statement "{\n              return uVar4;\n            }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "cVar6 = *pcVar3;" (assignment_expression "cVar6 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) ;) (expression_statement "pcVar8 = pcVar3;" (assignment_expression "pcVar8 = pcVar3" identifier = identifier) ;) }))) (while_statement "while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }" while (parenthesized_expression "((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10)))" ( (parenthesized_expression "(cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))" ( (binary_expression "cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10)" (binary_expression "cVar6 == '.'" identifier == (char_literal "'.'" ' character ')) && (parenthesized_expression "((byte)(pcVar8[1] - 0x30U) < 10)" ( (binary_expression "(byte)(pcVar8[1] - 0x30U) < 10" (call_expression "(byte)(pcVar8[1] - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pcVar8[1] - 0x30U)" ( (binary_expression "pcVar8[1] - 0x30U" (subscript_expression "pcVar8[1]" identifier [ number_literal ]) - number_literal) ))) < number_literal) ))) )) )) (compound_statement "{\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }" { (expression_statement "pcVar1 = pcVar8 + 2;" (assignment_expression "pcVar1 = pcVar8 + 2" identifier = (binary_expression "pcVar8 + 2" identifier + number_literal)) ;) (expression_statement "pcVar8 = pcVar8 + 2;" (assignment_expression "pcVar8 = pcVar8 + 2" identifier = (binary_expression "pcVar8 + 2" identifier + number_literal)) ;) (expression_statement "cVar6 = *pcVar1;" (assignment_expression "cVar6 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (while_statement "while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }" while (parenthesized_expression "((byte)(cVar6 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar6 - 0x30U) < 10" (call_expression "(byte)(cVar6 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar6 - 0x30U)" ( (binary_expression "cVar6 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }" { (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar6 = *pcVar8;" (assignment_expression "cVar6 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) })) })) (expression_statement "*(char **)(param_1 + 0x18) = pcVar8;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar8" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = (int)pcVar8 - (int)pcVar3;" (assignment_expression "iVar7 = (int)pcVar8 - (int)pcVar3" identifier = (binary_expression "(int)pcVar8 - (int)pcVar3" (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" if (parenthesized_expression "(iVar2 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar2 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }" { (expression_statement "puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);" (assignment_expression "puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" identifier = (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar2 * 0x18" (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "*(undefined4 *)((long)puVar5 + 4) = 0;" (assignment_expression "*(undefined4 *)((long)puVar5 + 4) = 0" (pointer_expression "*(undefined4 *)((long)puVar5 + 4)" * (cast_expression "(undefined4 *)((long)puVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 4)" ( (binary_expression "(long)puVar5 + 4" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar2 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar2 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 == 0) goto LAB_002d1ae0;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d1ae0;" goto statement_identifier ;)) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5[1] = pcVar3;" (assignment_expression "puVar5[1] = pcVar3" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(puVar5 + 2) = iVar7;" (assignment_expression "*(int *)(puVar5 + 2) = iVar7" (pointer_expression "*(int *)(puVar5 + 2)" * (cast_expression "(int *)(puVar5 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" else (compound_statement "{\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" { (labeled_statement "LAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;" statement_identifier : (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }))) (expression_statement "uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);" (assignment_expression "uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5)" identifier = (call_expression "FUN_002c91b0(param_1,0x4d,uVar4,puVar5)" identifier (argument_list "(param_1,0x4d,uVar4,puVar5)" ( identifier , number_literal , identifier , identifier )))) ;) })) })) (return_statement "return uVar4;" return identifier ;) })) }) (else_clause "else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" else (if_statement "if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" if (parenthesized_expression "((param_2 == 0) && (*pcVar3 == 'Z'))" ( (binary_expression "(param_2 == 0) && (*pcVar3 == 'Z')" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) && (parenthesized_expression "(*pcVar3 == 'Z')" ( (binary_expression "*pcVar3 == 'Z'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'Z'" ' character ')) ))) )) (compound_statement "{\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_002d12a0(param_1,0);" (assignment_expression "uVar4 = FUN_002d12a0(param_1,0)" identifier = (call_expression "FUN_002d12a0(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (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 (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (pointer_expression * IDENT) == (char_literal ' character '))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 , LIT , IDENT , IDENT )))) ;) })) })) (return_statement return IDENT ;) })) }) (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 ( IDENT , LIT )))) ;) (return_statement return IDENT ;) })))) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_002d1990(long param_1,int param_2)\n\n{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  char cVar6;\n  int iVar7;\n  char *pcVar8;\n  \n  pcVar3 = *(char **)(param_1 + 0x18);\n  if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "FUN_002d1990(long param_1,int param_2)" (identifier "FUN_002d1990") (parameter_list "(long param_1,int param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  char cVar6;\n  int iVar7;\n  char *pcVar8;\n  \n  pcVar3 = *(char **)(param_1 + 0x18);\n  if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }\n  return 0;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "char cVar6;" (primitive_type "char") (identifier "cVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (expression_statement "pcVar3 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x18)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (*pcVar3 == '_') {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }\n  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(*pcVar3 == '_')" (( "(") (binary_expression "*pcVar3 == '_'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }\n  }" ({ "{") (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pcVar3[1] == 'Z') {\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }" (if "if") (parenthesized_expression "(pcVar3[1] == 'Z')" (( "(") (binary_expression "pcVar3[1] == 'Z'" (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'Z'" (' "'") (character "Z") (' "'"))) () ")")) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar3 + 2;\n      uVar4 = FUN_002d12a0();\n      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }\n      return uVar4;\n    }" ({ "{") (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar3 + 2" (identifier "pcVar3") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar4 = FUN_002d12a0();" (assignment_expression "uVar4 = FUN_002d12a0()" (identifier "uVar4") (= "=") (call_expression "FUN_002d12a0()" (identifier "FUN_002d12a0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }" (if "if") (parenthesized_expression "((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0))" (( "(") (binary_expression "(param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)" (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x10) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0x10) & 1" (pointer_expression "*(byte *)(param_1 + 0x10)" (* "*") (cast_expression "(byte *)(param_1 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }\n      }" ({ "{") (while_statement "while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }" (while "while") (parenthesized_expression "(pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.')" (( "(") (comma_expression "pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.'" (assignment_expression "pcVar3 = *(char **)(param_1 + 0x18)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (, ",") (binary_expression "*pcVar3 == '.'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'")))) () ")")) (compound_statement "{\n          cVar6 = pcVar3[1];\n          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }\n          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }\n          *(char **)(param_1 + 0x18) = pcVar8;\n          iVar2 = *(int *)(param_1 + 0x28);\n          iVar7 = (int)pcVar8 - (int)pcVar3;\n          if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }\n          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);\n        }" ({ "{") (expression_statement "cVar6 = pcVar3[1];" (assignment_expression "cVar6 = pcVar3[1]" (identifier "cVar6") (= "=") (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }\n          else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" (if "if") (parenthesized_expression "(((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_'))" (( "(") (binary_expression "((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')" (parenthesized_expression "((byte)(cVar6 + 0x9fU) < 0x1a)" (( "(") (binary_expression "(byte)(cVar6 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar6 + 0x9fU)" (( "(") (binary_expression "cVar6 + 0x9fU" (identifier "cVar6") (+ "+") (number_literal "0x9fU")) () ")"))) (< "<") (number_literal "0x1a")) () ")")) (|| "||") (parenthesized_expression "(cVar6 == '_')" (( "(") (binary_expression "cVar6 == '_'" (identifier "cVar6") (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            cVar6 = pcVar3[2];\n            pcVar8 = pcVar3 + 2;\n            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;\n            do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');\n          }" ({ "{") (expression_statement "cVar6 = pcVar3[2];" (assignment_expression "cVar6 = pcVar3[2]" (identifier "cVar6") (= "=") (subscript_expression "pcVar3[2]" (identifier "pcVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pcVar8 = pcVar3 + 2;" (assignment_expression "pcVar8 = pcVar3 + 2" (identifier "pcVar8") (= "=") (binary_expression "pcVar3 + 2" (identifier "pcVar3") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;" (if "if") (parenthesized_expression "(0x19 < (byte)(cVar6 + 0x9fU))" (( "(") (binary_expression "0x19 < (byte)(cVar6 + 0x9fU)" (number_literal "0x19") (< "<") (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar6 + 0x9fU)" (( "(") (binary_expression "cVar6 + 0x9fU" (identifier "cVar6") (+ "+") (number_literal "0x9fU")) () ")")))) () ")")) (goto_statement "goto LAB_002d1b0f;" (goto "goto") (statement_identifier "LAB_002d1b0f") (; ";"))) (do_statement "do {\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            } while (cVar6 == '_');" (do "do") (compound_statement "{\n              do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);\nLAB_002d1b0f:\n            }" ({ "{") (do_statement "do {\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              } while ((byte)(cVar6 + 0x9fU) < 0x1a);" (do "do") (compound_statement "{\n                pcVar8 = pcVar8 + 1;\n                cVar6 = *pcVar8;\n              }" ({ "{") (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + 1" (identifier "pcVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar6 = *pcVar8;" (assignment_expression "cVar6 = *pcVar8" (identifier "cVar6") (= "=") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((byte)(cVar6 + 0x9fU) < 0x1a)" (( "(") (binary_expression "(byte)(cVar6 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar6 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar6 + 0x9fU)" (( "(") (binary_expression "cVar6 + 0x9fU" (identifier "cVar6") (+ "+") (number_literal "0x9fU")) () ")"))) (< "<") (number_literal "0x1a")) () ")")) (; ";")) (labeled_statement "LAB_002d1b0f:" (statement_identifier "LAB_002d1b0f") (: ":") (expression_statement "" (; ""))) (} "}")) (while "while") (parenthesized_expression "(cVar6 == '_')" (( "(") (binary_expression "cVar6 == '_'" (identifier "cVar6") (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (; ";")) (} "}")) (else_clause "else {\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" (else "else") (compound_statement "{\n            if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }\n            cVar6 = *pcVar3;\n            pcVar8 = pcVar3;\n          }" ({ "{") (if_statement "if (9 < (byte)(cVar6 - 0x30U)) {\n              return uVar4;\n            }" (if "if") (parenthesized_expression "(9 < (byte)(cVar6 - 0x30U))" (( "(") (binary_expression "9 < (byte)(cVar6 - 0x30U)" (number_literal "9") (< "<") (call_expression "(byte)(cVar6 - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar6 - 0x30U)" (( "(") (binary_expression "cVar6 - 0x30U" (identifier "cVar6") (- "-") (number_literal "0x30U")) () ")")))) () ")")) (compound_statement "{\n              return uVar4;\n            }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "cVar6 = *pcVar3;" (assignment_expression "cVar6 = *pcVar3" (identifier "cVar6") (= "=") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (; ";")) (expression_statement "pcVar8 = pcVar3;" (assignment_expression "pcVar8 = pcVar3" (identifier "pcVar8") (= "=") (identifier "pcVar3")) (; ";")) (} "}")))) (while_statement "while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }" (while "while") (parenthesized_expression "((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10)))" (( "(") (parenthesized_expression "(cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))" (( "(") (binary_expression "cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10)" (binary_expression "cVar6 == '.'" (identifier "cVar6") (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) (&& "&&") (parenthesized_expression "((byte)(pcVar8[1] - 0x30U) < 10)" (( "(") (binary_expression "(byte)(pcVar8[1] - 0x30U) < 10" (call_expression "(byte)(pcVar8[1] - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(pcVar8[1] - 0x30U)" (( "(") (binary_expression "pcVar8[1] - 0x30U" (subscript_expression "pcVar8[1]" (identifier "pcVar8") ([ "[") (number_literal "1") (] "]")) (- "-") (number_literal "0x30U")) () ")"))) (< "<") (number_literal "10")) () ")"))) () ")")) () ")")) (compound_statement "{\n            pcVar1 = pcVar8 + 2;\n            pcVar8 = pcVar8 + 2;\n            cVar6 = *pcVar1;\n            while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }\n          }" ({ "{") (expression_statement "pcVar1 = pcVar8 + 2;" (assignment_expression "pcVar1 = pcVar8 + 2" (identifier "pcVar1") (= "=") (binary_expression "pcVar8 + 2" (identifier "pcVar8") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pcVar8 = pcVar8 + 2;" (assignment_expression "pcVar8 = pcVar8 + 2" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + 2" (identifier "pcVar8") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "cVar6 = *pcVar1;" (assignment_expression "cVar6 = *pcVar1" (identifier "cVar6") (= "=") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1"))) (; ";")) (while_statement "while ((byte)(cVar6 - 0x30U) < 10) {\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }" (while "while") (parenthesized_expression "((byte)(cVar6 - 0x30U) < 10)" (( "(") (binary_expression "(byte)(cVar6 - 0x30U) < 10" (call_expression "(byte)(cVar6 - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar6 - 0x30U)" (( "(") (binary_expression "cVar6 - 0x30U" (identifier "cVar6") (- "-") (number_literal "0x30U")) () ")"))) (< "<") (number_literal "10")) () ")")) (compound_statement "{\n              pcVar8 = pcVar8 + 1;\n              cVar6 = *pcVar8;\n            }" ({ "{") (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + 1" (identifier "pcVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar6 = *pcVar8;" (assignment_expression "cVar6 = *pcVar8" (identifier "cVar6") (= "=") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(char **)(param_1 + 0x18) = pcVar8;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar8" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pcVar8")) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x28)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "iVar7 = (int)pcVar8 - (int)pcVar3;" (assignment_expression "iVar7 = (int)pcVar8 - (int)pcVar3" (identifier "iVar7") (= "=") (binary_expression "(int)pcVar8 - (int)pcVar3" (cast_expression "(int)pcVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar8")) (- "-") (cast_expression "(int)pcVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar3")))) (; ";")) (if_statement "if (iVar2 < *(int *)(param_1 + 0x2c)) {\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }\n          else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" (if "if") (parenthesized_expression "(iVar2 < *(int *)(param_1 + 0x2c))" (( "(") (binary_expression "iVar2 < *(int *)(param_1 + 0x2c)" (identifier "iVar2") (< "<") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);\n            *(undefined4 *)((long)puVar5 + 4) = 0;\n            *(int *)(param_1 + 0x28) = iVar2 + 1;\n            if (iVar7 == 0) goto LAB_002d1ae0;\n            *puVar5 = 0;\n            puVar5[1] = pcVar3;\n            *(int *)(puVar5 + 2) = iVar7;\n          }" ({ "{") (expression_statement "puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);" (assignment_expression "puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18)" (( "(") (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (binary_expression "(long)iVar2 * 0x18" (cast_expression "(long)iVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar2")) (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*(undefined4 *)((long)puVar5 + 4) = 0;" (assignment_expression "*(undefined4 *)((long)puVar5 + 4) = 0" (pointer_expression "*(undefined4 *)((long)puVar5 + 4)" (* "*") (cast_expression "(undefined4 *)((long)puVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 4)" (( "(") (binary_expression "(long)puVar5 + 4" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x28) = iVar2 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar2 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar7 == 0) goto LAB_002d1ae0;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002d1ae0;" (goto "goto") (statement_identifier "LAB_002d1ae0") (; ";"))) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5[1] = pcVar3;" (assignment_expression "puVar5[1] = pcVar3" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "pcVar3")) (; ";")) (expression_statement "*(int *)(puVar5 + 2) = iVar7;" (assignment_expression "*(int *)(puVar5 + 2) = iVar7" (pointer_expression "*(int *)(puVar5 + 2)" (* "*") (cast_expression "(int *)(puVar5 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 2)" (( "(") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (} "}")) (else_clause "else {\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" (else "else") (compound_statement "{\nLAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;\n          }" ({ "{") (labeled_statement "LAB_002d1ae0:\n            puVar5 = (undefined8 *)0x0;" (statement_identifier "LAB_002d1ae0") (: ":") (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")))) (expression_statement "uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);" (assignment_expression "uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5)" (identifier "uVar4") (= "=") (call_expression "FUN_002c91b0(param_1,0x4d,uVar4,puVar5)" (identifier "FUN_002c91b0") (argument_list "(param_1,0x4d,uVar4,puVar5)" (( "(") (identifier "param_1") (, ",") (number_literal "0x4d") (, ",") (identifier "uVar4") (, ",") (identifier "puVar5") () ")")))) (; ";")) (} "}"))) (} "}"))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" (else "else") (if_statement "if ((param_2 == 0) && (*pcVar3 == 'Z')) {\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" (if "if") (parenthesized_expression "((param_2 == 0) && (*pcVar3 == 'Z'))" (( "(") (binary_expression "(param_2 == 0) && (*pcVar3 == 'Z')" (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*pcVar3 == 'Z')" (( "(") (binary_expression "*pcVar3 == 'Z'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'Z'" (' "'") (character "Z") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    *(char **)(param_1 + 0x18) = pcVar3 + 1;\n    uVar4 = FUN_002d12a0(param_1,0);\n    return uVar4;\n  }" ({ "{") (expression_statement "*(char **)(param_1 + 0x18) = pcVar3 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar3 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = FUN_002d12a0(param_1,0);" (assignment_expression "uVar4 = FUN_002d12a0(param_1,0)" (identifier "uVar4") (= "=") (call_expression "FUN_002d12a0(param_1,0)" (identifier "FUN_002d12a0") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

type_1 * function_1(type_2 *di,int var_3)

{
  type_3 var_5;
  int var_10;
  char *var_1;
  type_1 *pdVar4;
  type_4 *pdVar5;
  type_1 *pdVar6;
  type_1 *pdVar7;
  type_5 var_6;
  int var_11;
  
  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) && ((di->options & 1) != 0)) {
        while (pdVar4 = (type_1 *)di->n,
              (char)pdVar4->type == var_4) {
          var_5 = *(type_3 *)((long)&pdVar4->type + 1);
          if (((type_3)(var_5 + 0x9f) < 0x1a) || (var_5 == 0x5f)) {
            var_6 = *(type_3 *)((long)&pdVar4->type + 2);
            pdVar7 = (type_1 *)((long)&pdVar4->type + 2);
            if (0x19 < (type_3)(var_6 + 0x9f)) goto LAB_002d1b0f;
            do {
              do {
                pdVar7 = (type_1 *)((long)&pdVar7->type + 1);
                var_6 = (type_5)pdVar7->type;
              } while ((type_3)(var_6 + 0x9f) < 0x1a);
LAB_002d1b0f:
            } while (var_6 == (var_7|var_8));
          }
          else {
            if (9 < (type_3)(var_5 - 0x30)) {
              return pdVar6;
            }
            var_6 = (type_5)pdVar4->type;
            pdVar7 = pdVar4;
          }
          while ((var_6 == var_4 &&
                 ((type_3)(*(type_3 *)((long)&pdVar7->type + 1) - 0x30) < 10))) {
            pdVar5 = &pdVar7->type;
            pdVar7 = (type_1 *)((long)&pdVar7->type + 2);
            var_6 = *(type_3 *)((long)pdVar5 + 2);
            while ((type_3)(var_6 - var_9) < 10) {
              pdVar7 = (type_1 *)((long)&pdVar7->type + 1);
              var_6 = (type_5)pdVar7->type;
            }
          }
          di->n = (char *)pdVar7;
          var_10 = di->next_comp;
          var_11 = (int)pdVar7 - (int)pdVar4;
          if (var_10 < di->num_comps) {
            pdVar7 = di->comps + var_10;
            pdVar7->d_printing = 0;
            di->next_comp = var_10 + 1;
            if (var_11 == 0) goto LAB_002d1ae0;
            pdVar7->type = DEMANGLE_COMPONENT_NAME;
            pdVar7->d_printing = 0;
            (pdVar7->u).s_fixed.length = pdVar4;
            (pdVar7->u).s_name.len = var_11;
          }
          else {
LAB_002d1ae0:
            pdVar7 = (type_1 *)0x0;
          }
          pdVar6 = var_12(di,DEMANGLE_COMPONENT_CLONE,pdVar6,pdVar7);
        }
      }
      return pdVar6;
    }
  }
  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: (sized_type_specifier) 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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (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)))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (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: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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: (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: (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) (number_literal) (identifier) (identifier))))))))) (return_statement (identifier))))) 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 (identifier) (number_literal))))) (return_statement (identifier)))))) (return_statement (number_literal)))))

undefined8 MASKED(long param_1,int param_2)

{
  char *pcVar1;
  int iVar2;
  char *pcVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  char cVar6;
  int iVar7;
  char *pcVar8;
  
  pcVar3 = *(char **)(param_1 + 0x18);
  if (*pcVar3 == '_') {
    *(char **)(param_1 + 0x18) = pcVar3 + 1;
    if (pcVar3[1] == 'Z') {
      *(char **)(param_1 + 0x18) = pcVar3 + 2;
      uVar4 = FUN_002d12a0();
      if ((param_2 != 0) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {
        while (pcVar3 = *(char **)(param_1 + 0x18), *pcVar3 == '.') {
          cVar6 = pcVar3[1];
          if (((byte)(cVar6 + 0x9fU) < 0x1a) || (cVar6 == '_')) {
            cVar6 = pcVar3[2];
            pcVar8 = pcVar3 + 2;
            if (0x19 < (byte)(cVar6 + 0x9fU)) goto LAB_002d1b0f;
            do {
              do {
                pcVar8 = pcVar8 + 1;
                cVar6 = *pcVar8;
              } while ((byte)(cVar6 + 0x9fU) < 0x1a);
LAB_002d1b0f:
            } while (cVar6 == '_');
          }
          else {
            if (9 < (byte)(cVar6 - 0x30U)) {
              return uVar4;
            }
            cVar6 = *pcVar3;
            pcVar8 = pcVar3;
          }
          while ((cVar6 == '.' && ((byte)(pcVar8[1] - 0x30U) < 10))) {
            pcVar1 = pcVar8 + 2;
            pcVar8 = pcVar8 + 2;
            cVar6 = *pcVar1;
            while ((byte)(cVar6 - 0x30U) < 10) {
              pcVar8 = pcVar8 + 1;
              cVar6 = *pcVar8;
            }
          }
          *(char **)(param_1 + 0x18) = pcVar8;
          iVar2 = *(int *)(param_1 + 0x28);
          iVar7 = (int)pcVar8 - (int)pcVar3;
          if (iVar2 < *(int *)(param_1 + 0x2c)) {
            puVar5 = (undefined8 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18);
            *(undefined4 *)((long)puVar5 + 4) = 0;
            *(int *)(param_1 + 0x28) = iVar2 + 1;
            if (iVar7 == 0) goto LAB_002d1ae0;
            *puVar5 = 0;
            puVar5[1] = pcVar3;
            *(int *)(puVar5 + 2) = iVar7;
          }
          else {
LAB_002d1ae0:
            puVar5 = (undefined8 *)0x0;
          }
          uVar4 = FUN_002c91b0(param_1,0x4d,uVar4,puVar5);
        }
      }
      return uVar4;
    }
  }
  else if ((param_2 == 0) && (*pcVar3 == 'Z')) {
    *(char **)(param_1 + 0x18) = pcVar3 + 1;
    uVar4 = FUN_002d12a0(param_1,0);
    return uVar4;
  }
  return 0;
}

