
char * __regparm3 skipcond(char *p)

{
  char *pcVar1;
  char cVar2;
  char *pcVar3;
  char cVar4;
  int iVar5;
  bool bVar6;
  
  cVar4 = p[1];
  iVar5 = 1;
  pcVar3 = p + 1;
  cVar2 = cVar4 + -0x3a;
  bVar6 = cVar4 == ':';
  if (bVar6) goto LAB_00026e9c;
  do {
    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {
      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {
        return p;
      }
    }
    else if (cVar4 == '?') {
      iVar5 = iVar5 + 1;
    }
    else if (cVar4 == '\\') {
      pcVar3 = p + 2;
    }
    while( true ) {
      cVar4 = pcVar3[1];
      pcVar1 = pcVar3 + 1;
      cVar2 = cVar4 + -0x3a;
      bVar6 = cVar2 == '\0';
      p = pcVar3;
      pcVar3 = pcVar1;
      if (!bVar6) break;
LAB_00026e9c:
      if (iVar5 == 1) {
        return pcVar3;
      }
    }
  } while( true );
}



int __regparm3 FUN_00026e60(int param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  bool bVar6;
  
  cVar4 = *(char *)(param_1 + 1);
  iVar5 = 1;
  iVar3 = param_1 + 1;
  cVar2 = cVar4 + -0x3a;
  bVar6 = cVar4 == ':';
  if (bVar6) goto LAB_00026e9c;
  do {
    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {
      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))
      {
        return param_1;
      }
    }
    else if (cVar4 == '?') {
      iVar5 = iVar5 + 1;
    }
    else if (cVar4 == '\\') {
      iVar3 = param_1 + 2;
    }
    while( true ) {
      cVar4 = *(char *)(iVar3 + 1);
      iVar1 = iVar3 + 1;
      cVar2 = cVar4 + -0x3a;
      bVar6 = cVar2 == '\0';
      param_1 = iVar3;
      iVar3 = iVar1;
      if (!bVar6) break;
LAB_00026e9c:
      if (iVar5 == 1) {
        return iVar3;
      }
    }
  } while( true );
}


PUSH EBX
MOVZX EDX,byte ptr [EAX + 0x1]
MOV EBX,0x1
LEA ECX,[EAX + 0x1]
CMP DL,0x3a
JZ 0x00026e9c
LEA ESI,[ESI]
JG 0x00026ea8
TEST DL,DL
JZ 0x00026ea3
CMP DL,0x2e
JNZ 0x00026e88
SUB EBX,0x1
JZ 0x00026ea1
MOV EAX,ECX
LEA ESI,[ESI]
MOVZX EDX,byte ptr [EAX + 0x1]
LEA ECX,[EAX + 0x1]
CMP DL,0x3a
JNZ 0x00026e78
CMP EBX,0x1
JNZ 0x00026e88
MOV EAX,ECX
POP EBX
RET
CMP DL,0x3f
JZ 0x00026ec0
ADD EAX,0x2
CMP DL,0x5c
CMOVZ ECX,EAX
MOV EAX,ECX
JMP 0x00026e90
ADD EBX,0x1
MOV EAX,ECX
JMP 0x00026e90
(translation_unit "int __regparm3 FUN_00026e60(int param_1)\n\n{\n  int iVar1;\n  char cVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = *(char *)(param_1 + 1);\n  iVar5 = 1;\n  iVar3 = param_1 + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "int __regparm3 FUN_00026e60(int param_1)\n\n{\n  int iVar1;\n  char cVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = *(char *)(param_1 + 1);\n  iVar5 = 1;\n  iVar3 = param_1 + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00026e60(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = *(char *)(param_1 + 1);\n  iVar5 = 1;\n  iVar3 = param_1 + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (expression_statement "cVar4 = *(char *)(param_1 + 1);" (assignment_expression "cVar4 = *(char *)(param_1 + 1)" identifier = (pointer_expression "*(char *)(param_1 + 1)" * (cast_expression "(char *)(param_1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = param_1 + 1;" (assignment_expression "iVar3 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "cVar2 = cVar4 + -0x3a;" (assignment_expression "cVar2 = cVar4 + -0x3a" identifier = (binary_expression "cVar4 + -0x3a" identifier + number_literal)) ;) (expression_statement "bVar6 = cVar4 == ':';" (assignment_expression "bVar6 = cVar4 == ':'" identifier = (binary_expression "cVar4 == ':'" identifier == (char_literal "':'" ' character '))) ;) (if_statement "if (bVar6) goto LAB_00026e9c;" if (parenthesized_expression "(bVar6)" ( identifier )) (goto_statement "goto LAB_00026e9c;" goto statement_identifier ;)) (do_statement "do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  }" { (if_statement "if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" if (parenthesized_expression "(bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0')" ( (binary_expression "bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0'" identifier || (binary_expression "SBORROW1(cVar4,':') != cVar2 < '\0'" (call_expression "SBORROW1(cVar4,':')" identifier (argument_list "(cVar4,':')" ( identifier , (char_literal "':'" ' character ') ))) != (binary_expression "cVar2 < '\0'" identifier < (char_literal "'\0'" ' escape_sequence ')))) )) (compound_statement "{\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }" { (if_statement "if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }" if (parenthesized_expression "((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))" ( (binary_expression "(cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)))" (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)))" ( (parenthesized_expression "(cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))" ( (binary_expression "cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)" (binary_expression "cVar4 == '.'" identifier == (char_literal "'.'" ' character ')) && (parenthesized_expression "(iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)" ( (comma_expression "iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) , (comma_expression "param_1 = iVar3, iVar5 == 0" (assignment_expression "param_1 = iVar3" identifier = identifier) , (binary_expression "iVar5 == 0" identifier == number_literal))) ))) )) ))) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" else (if_statement "if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" if (parenthesized_expression "(cVar4 == '?')" ( (binary_expression "cVar4 == '?'" identifier == (char_literal "'?'" ' character ')) )) (compound_statement "{\n      iVar5 = iVar5 + 1;\n    }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) (else_clause "else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" else (if_statement "if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" if (parenthesized_expression "(cVar4 == '\\')" ( (binary_expression "cVar4 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence ')) )) (compound_statement "{\n      iVar3 = param_1 + 2;\n    }" { (expression_statement "iVar3 = param_1 + 2;" (assignment_expression "iVar3 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) })))))) (while_statement "while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }" { (expression_statement "cVar4 = *(char *)(iVar3 + 1);" (assignment_expression "cVar4 = *(char *)(iVar3 + 1)" identifier = (pointer_expression "*(char *)(iVar3 + 1)" * (cast_expression "(char *)(iVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar3 + 1;" (assignment_expression "iVar1 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "cVar2 = cVar4 + -0x3a;" (assignment_expression "cVar2 = cVar4 + -0x3a" identifier = (binary_expression "cVar4 + -0x3a" identifier + number_literal)) ;) (expression_statement "bVar6 = cVar2 == '\0';" (assignment_expression "bVar6 = cVar2 == '\0'" identifier = (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "param_1 = iVar3;" (assignment_expression "param_1 = iVar3" identifier = identifier) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) (if_statement "if (!bVar6) break;" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }" statement_identifier : (if_statement "if (iVar5 == 1) {\n        return iVar3;\n      }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n        return iVar3;\n      }" { (return_statement "return iVar3;" return identifier ;) }))) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "char * __regparm3 skipcond(char *p)\n\n{\n  char *pcVar1;\n  char cVar2;\n  char *pcVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = p[1];\n  iVar5 = 1;\n  pcVar3 = p + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {\n        return p;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }\n    while( true ) {\n      cVar4 = pcVar3[1];\n      pcVar1 = pcVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      p = pcVar3;\n      pcVar3 = pcVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return pcVar3;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "char * __regparm3 skipcond(char *p)\n\n{\n  char *pcVar1;\n  char cVar2;\n  char *pcVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = p[1];\n  iVar5 = 1;\n  pcVar3 = p + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {\n        return p;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }\n    while( true ) {\n      cVar4 = pcVar3[1];\n      pcVar1 = pcVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      p = pcVar3;\n      pcVar3 = pcVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return pcVar3;\n      }\n    }\n  } while( true );\n}" primitive_type (pointer_declarator "* __regparm3 skipcond(char *p)" * (ERROR "__regparm3" identifier) (function_declarator "skipcond(char *p)" identifier (parameter_list "(char *p)" ( (parameter_declaration "char *p" primitive_type (pointer_declarator "*p" * identifier)) )))) (compound_statement "{\n  char *pcVar1;\n  char cVar2;\n  char *pcVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = p[1];\n  iVar5 = 1;\n  pcVar3 = p + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {\n        return p;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }\n    while( true ) {\n      cVar4 = pcVar3[1];\n      pcVar1 = pcVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      p = pcVar3;\n      pcVar3 = pcVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return pcVar3;\n      }\n    }\n  } while( true );\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (expression_statement "cVar4 = p[1];" (assignment_expression "cVar4 = p[1]" identifier = (subscript_expression "p[1]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "pcVar3 = p + 1;" (assignment_expression "pcVar3 = p + 1" identifier = (binary_expression "p + 1" identifier + number_literal)) ;) (expression_statement "cVar2 = cVar4 + -0x3a;" (assignment_expression "cVar2 = cVar4 + -0x3a" identifier = (binary_expression "cVar4 + -0x3a" identifier + number_literal)) ;) (expression_statement "bVar6 = cVar4 == ':';" (assignment_expression "bVar6 = cVar4 == ':'" identifier = (binary_expression "cVar4 == ':'" identifier == (char_literal "':'" ' character '))) ;) (if_statement "if (bVar6) goto LAB_00026e9c;" if (parenthesized_expression "(bVar6)" ( identifier )) (goto_statement "goto LAB_00026e9c;" goto statement_identifier ;)) (do_statement "do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {\n        return p;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }\n    while( true ) {\n      cVar4 = pcVar3[1];\n      pcVar1 = pcVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      p = pcVar3;\n      pcVar3 = pcVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return pcVar3;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {\n        return p;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }\n    while( true ) {\n      cVar4 = pcVar3[1];\n      pcVar1 = pcVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      p = pcVar3;\n      pcVar3 = pcVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return pcVar3;\n      }\n    }\n  }" { (if_statement "if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {\n        return p;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }" if (parenthesized_expression "(bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0')" ( (binary_expression "bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0'" identifier || (binary_expression "SBORROW1(cVar4,':') != cVar2 < '\0'" (call_expression "SBORROW1(cVar4,':')" identifier (argument_list "(cVar4,':')" ( identifier , (char_literal "':'" ' character ') ))) != (binary_expression "cVar2 < '\0'" identifier < (char_literal "'\0'" ' escape_sequence ')))) )) (compound_statement "{\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {\n        return p;\n      }\n    }" { (if_statement "if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))) {\n        return p;\n      }" if (parenthesized_expression "((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0))))" ( (binary_expression "(cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))" (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "((cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)))" ( (parenthesized_expression "(cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0))" ( (binary_expression "cVar4 == '.' && (iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)" (binary_expression "cVar4 == '.'" identifier == (char_literal "'.'" ' character ')) && (parenthesized_expression "(iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0)" ( (comma_expression "iVar5 = iVar5 + -1, p = pcVar3, iVar5 == 0" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) , (comma_expression "p = pcVar3, iVar5 == 0" (assignment_expression "p = pcVar3" identifier = identifier) , (binary_expression "iVar5 == 0" identifier == number_literal))) ))) )) ))) )) (compound_statement "{\n        return p;\n      }" { (return_statement "return p;" return identifier ;) })) }) (else_clause "else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }" else (if_statement "if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }" if (parenthesized_expression "(cVar4 == '?')" ( (binary_expression "cVar4 == '?'" identifier == (char_literal "'?'" ' character ')) )) (compound_statement "{\n      iVar5 = iVar5 + 1;\n    }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) (else_clause "else if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }" else (if_statement "if (cVar4 == '\\') {\n      pcVar3 = p + 2;\n    }" if (parenthesized_expression "(cVar4 == '\\')" ( (binary_expression "cVar4 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar3 = p + 2;\n    }" { (expression_statement "pcVar3 = p + 2;" (assignment_expression "pcVar3 = p + 2" identifier = (binary_expression "p + 2" identifier + number_literal)) ;) })))))) (while_statement "while( true ) {\n      cVar4 = pcVar3[1];\n      pcVar1 = pcVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      p = pcVar3;\n      pcVar3 = pcVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return pcVar3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      cVar4 = pcVar3[1];\n      pcVar1 = pcVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      p = pcVar3;\n      pcVar3 = pcVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return pcVar3;\n      }\n    }" { (expression_statement "cVar4 = pcVar3[1];" (assignment_expression "cVar4 = pcVar3[1]" identifier = (subscript_expression "pcVar3[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar1 = pcVar3 + 1;" (assignment_expression "pcVar1 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "cVar2 = cVar4 + -0x3a;" (assignment_expression "cVar2 = cVar4 + -0x3a" identifier = (binary_expression "cVar4 + -0x3a" identifier + number_literal)) ;) (expression_statement "bVar6 = cVar2 == '\0';" (assignment_expression "bVar6 = cVar2 == '\0'" identifier = (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "p = pcVar3;" (assignment_expression "p = pcVar3" identifier = identifier) ;) (expression_statement "pcVar3 = pcVar1;" (assignment_expression "pcVar3 = pcVar1" identifier = identifier) ;) (if_statement "if (!bVar6) break;" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00026e9c:\n      if (iVar5 == 1) {\n        return pcVar3;\n      }" statement_identifier : (if_statement "if (iVar5 == 1) {\n        return pcVar3;\n      }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n        return pcVar3;\n      }" { (return_statement "return pcVar3;" return identifier ;) }))) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int __regparm3 FUN_00026e60(int param_1)\n\n{\n  int iVar1;\n  char cVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = *(char *)(param_1 + 1);\n  iVar5 = 1;\n  iVar3 = param_1 + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "int __regparm3 FUN_00026e60(int param_1)\n\n{\n  int iVar1;\n  char cVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = *(char *)(param_1 + 1);\n  iVar5 = 1;\n  iVar3 = param_1 + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00026e60(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = *(char *)(param_1 + 1);\n  iVar5 = 1;\n  iVar3 = param_1 + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (expression_statement "cVar4 = *(char *)(param_1 + 1);" (assignment_expression "cVar4 = *(char *)(param_1 + 1)" identifier = (pointer_expression "*(char *)(param_1 + 1)" * (cast_expression "(char *)(param_1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = param_1 + 1;" (assignment_expression "iVar3 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "cVar2 = cVar4 + -0x3a;" (assignment_expression "cVar2 = cVar4 + -0x3a" identifier = (binary_expression "cVar4 + -0x3a" identifier + number_literal)) ;) (expression_statement "bVar6 = cVar4 == ':';" (assignment_expression "bVar6 = cVar4 == ':'" identifier = (binary_expression "cVar4 == ':'" identifier == (char_literal "':'" ' character '))) ;) (if_statement "if (bVar6) goto LAB_00026e9c;" if (parenthesized_expression "(bVar6)" ( identifier )) (goto_statement "goto LAB_00026e9c;" goto statement_identifier ;)) (do_statement "do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  }" { (if_statement "if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" if (parenthesized_expression "(bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0')" ( (binary_expression "bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0'" identifier || (binary_expression "SBORROW1(cVar4,':') != cVar2 < '\0'" (call_expression "SBORROW1(cVar4,':')" identifier (argument_list "(cVar4,':')" ( identifier , (char_literal "':'" ' character ') ))) != (binary_expression "cVar2 < '\0'" identifier < (char_literal "'\0'" ' escape_sequence ')))) )) (compound_statement "{\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }" { (if_statement "if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }" if (parenthesized_expression "((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))" ( (binary_expression "(cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)))" (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)))" ( (parenthesized_expression "(cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))" ( (binary_expression "cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)" (binary_expression "cVar4 == '.'" identifier == (char_literal "'.'" ' character ')) && (parenthesized_expression "(iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)" ( (comma_expression "iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) , (comma_expression "param_1 = iVar3, iVar5 == 0" (assignment_expression "param_1 = iVar3" identifier = identifier) , (binary_expression "iVar5 == 0" identifier == number_literal))) ))) )) ))) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" else (if_statement "if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" if (parenthesized_expression "(cVar4 == '?')" ( (binary_expression "cVar4 == '?'" identifier == (char_literal "'?'" ' character ')) )) (compound_statement "{\n      iVar5 = iVar5 + 1;\n    }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) (else_clause "else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" else (if_statement "if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" if (parenthesized_expression "(cVar4 == '\\')" ( (binary_expression "cVar4 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence ')) )) (compound_statement "{\n      iVar3 = param_1 + 2;\n    }" { (expression_statement "iVar3 = param_1 + 2;" (assignment_expression "iVar3 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) })))))) (while_statement "while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }" { (expression_statement "cVar4 = *(char *)(iVar3 + 1);" (assignment_expression "cVar4 = *(char *)(iVar3 + 1)" identifier = (pointer_expression "*(char *)(iVar3 + 1)" * (cast_expression "(char *)(iVar3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 1)" ( (binary_expression "iVar3 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = iVar3 + 1;" (assignment_expression "iVar1 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "cVar2 = cVar4 + -0x3a;" (assignment_expression "cVar2 = cVar4 + -0x3a" identifier = (binary_expression "cVar4 + -0x3a" identifier + number_literal)) ;) (expression_statement "bVar6 = cVar2 == '\0';" (assignment_expression "bVar6 = cVar2 == '\0'" identifier = (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "param_1 = iVar3;" (assignment_expression "param_1 = iVar3" identifier = identifier) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) (if_statement "if (!bVar6) break;" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }" statement_identifier : (if_statement "if (iVar5 == 1) {\n        return iVar3;\n      }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n        return iVar3;\n      }" { (return_statement "return iVar3;" return identifier ;) }))) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' character '))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT || (binary_expression (call_expression IDENT (argument_list ( IDENT , (char_literal ' character ') ))) != (binary_expression IDENT < (char_literal ' escape_sequence ')))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (char_literal ' character ')) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT))) ))) )) ))) )) (compound_statement { (return_statement return IDENT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })))))) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) }))) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int __regparm3 FUN_00026e60(int param_1)\n\n{\n  int iVar1;\n  char cVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = *(char *)(param_1 + 1);\n  iVar5 = 1;\n  iVar3 = param_1 + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00026e60(int param_1)" (identifier "FUN_00026e60") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  int iVar3;\n  char cVar4;\n  int iVar5;\n  bool bVar6;\n  \n  cVar4 = *(char *)(param_1 + 1);\n  iVar5 = 1;\n  iVar3 = param_1 + 1;\n  cVar2 = cVar4 + -0x3a;\n  bVar6 = cVar4 == ':';\n  if (bVar6) goto LAB_00026e9c;\n  do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (expression_statement "cVar4 = *(char *)(param_1 + 1);" (assignment_expression "cVar4 = *(char *)(param_1 + 1)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(param_1 + 1)" (* "*") (cast_expression "(char *)(param_1 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = param_1 + 1;" (assignment_expression "iVar3 = param_1 + 1" (identifier "iVar3") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar2 = cVar4 + -0x3a;" (assignment_expression "cVar2 = cVar4 + -0x3a" (identifier "cVar2") (= "=") (binary_expression "cVar4 + -0x3a" (identifier "cVar4") (+ "+") (number_literal "-0x3a"))) (; ";")) (expression_statement "bVar6 = cVar4 == ':';" (assignment_expression "bVar6 = cVar4 == ':'" (identifier "bVar6") (= "=") (binary_expression "cVar4 == ':'" (identifier "cVar4") (== "==") (char_literal "':'" (' "'") (character ":") (' "'")))) (; ";")) (if_statement "if (bVar6) goto LAB_00026e9c;" (if "if") (parenthesized_expression "(bVar6)" (( "(") (identifier "bVar6") () ")")) (goto_statement "goto LAB_00026e9c;" (goto "goto") (statement_identifier "LAB_00026e9c") (; ";"))) (do_statement "do {\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }\n    while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }\n  }" ({ "{") (if_statement "if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }\n    else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" (if "if") (parenthesized_expression "(bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0')" (( "(") (binary_expression "bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0'" (identifier "bVar6") (|| "||") (binary_expression "SBORROW1(cVar4,':') != cVar2 < '\0'" (call_expression "SBORROW1(cVar4,':')" (identifier "SBORROW1") (argument_list "(cVar4,':')" (( "(") (identifier "cVar4") (, ",") (char_literal "':'" (' "'") (character ":") (' "'")) () ")"))) (!= "!=") (binary_expression "cVar2 < '\0'" (identifier "cVar2") (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))))) () ")")) (compound_statement "{\n      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }\n    }" ({ "{") (if_statement "if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))\n      {\n        return param_1;\n      }" (if "if") (parenthesized_expression "((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))" (( "(") (binary_expression "(cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)))" (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)))" (( "(") (parenthesized_expression "(cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))" (( "(") (binary_expression "cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)" (binary_expression "cVar4 == '.'" (identifier "cVar4") (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) (&& "&&") (parenthesized_expression "(iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0)" (( "(") (comma_expression "iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (, ",") (comma_expression "param_1 = iVar3, iVar5 == 0" (assignment_expression "param_1 = iVar3" (identifier "param_1") (= "=") (identifier "iVar3")) (, ",") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        return param_1;\n      }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (} "}")) (else_clause "else if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" (else "else") (if_statement "if (cVar4 == '?') {\n      iVar5 = iVar5 + 1;\n    }\n    else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" (if "if") (parenthesized_expression "(cVar4 == '?')" (( "(") (binary_expression "cVar4 == '?'" (identifier "cVar4") (== "==") (char_literal "'?'" (' "'") (character "?") (' "'"))) () ")")) (compound_statement "{\n      iVar5 = iVar5 + 1;\n    }" ({ "{") (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" (else "else") (if_statement "if (cVar4 == '\\') {\n      iVar3 = param_1 + 2;\n    }" (if "if") (parenthesized_expression "(cVar4 == '\\')" (( "(") (binary_expression "cVar4 == '\\'" (identifier "cVar4") (== "==") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'"))) () ")")) (compound_statement "{\n      iVar3 = param_1 + 2;\n    }" ({ "{") (expression_statement "iVar3 = param_1 + 2;" (assignment_expression "iVar3 = param_1 + 2" (identifier "iVar3") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (} "}"))))))) (while_statement "while( true ) {\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      cVar4 = *(char *)(iVar3 + 1);\n      iVar1 = iVar3 + 1;\n      cVar2 = cVar4 + -0x3a;\n      bVar6 = cVar2 == '\0';\n      param_1 = iVar3;\n      iVar3 = iVar1;\n      if (!bVar6) break;\nLAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }\n    }" ({ "{") (expression_statement "cVar4 = *(char *)(iVar3 + 1);" (assignment_expression "cVar4 = *(char *)(iVar3 + 1)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar3 + 1)" (* "*") (cast_expression "(char *)(iVar3 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 1)" (( "(") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar1 = iVar3 + 1;" (assignment_expression "iVar1 = iVar3 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar2 = cVar4 + -0x3a;" (assignment_expression "cVar2 = cVar4 + -0x3a" (identifier "cVar2") (= "=") (binary_expression "cVar4 + -0x3a" (identifier "cVar4") (+ "+") (number_literal "-0x3a"))) (; ";")) (expression_statement "bVar6 = cVar2 == '\0';" (assignment_expression "bVar6 = cVar2 == '\0'" (identifier "bVar6") (= "=") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (expression_statement "param_1 = iVar3;" (assignment_expression "param_1 = iVar3" (identifier "param_1") (= "=") (identifier "iVar3")) (; ";")) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" (identifier "iVar3") (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (!bVar6) break;" (if "if") (parenthesized_expression "(!bVar6)" (( "(") (unary_expression "!bVar6" (! "!") (identifier "bVar6")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00026e9c:\n      if (iVar5 == 1) {\n        return iVar3;\n      }" (statement_identifier "LAB_00026e9c") (: ":") (if_statement "if (iVar5 == 1) {\n        return iVar3;\n      }" (if "if") (parenthesized_expression "(iVar5 == 1)" (( "(") (binary_expression "iVar5 == 1" (identifier "iVar5") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        return iVar3;\n      }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

char * __regparm3 function_1(char *var_1)

{
  char *pcVar1;
  char var_5;
  char *var_7;
  char var_2;
  int var_6;
  bool var_3;
  
  var_2 = var_1[1];
  var_6 = 1;
  var_7 = var_1 + 1;
  var_5 = var_2 + -0x3a;
  var_3 = var_2 == ':';
  if (var_3) goto LAB_00026e9c;
  do {
    if (var_3 || var_4(var_2,':') != var_5 < '\0') {
      if ((var_2 == '\0') || ((var_2 == '.' && (var_6 = var_6 + -1, var_1 = var_7, var_6 == 0)))) {
        return var_1;
      }
    }
    else if (var_2 == '?') {
      var_6 = var_6 + 1;
    }
    else if (var_2 == '\\') {
      var_7 = var_1 + 2;
    }
    while( true ) {
      var_2 = var_7[1];
      pcVar1 = var_7 + 1;
      var_5 = var_2 + -0x3a;
      var_3 = var_5 == '\0';
      var_1 = var_7;
      var_7 = pcVar1;
      if (!var_3) break;
LAB_00026e9c:
      if (var_6 == 1) {
        return var_7;
      }
    }
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (char_literal (character))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (char_literal (character)))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (char_literal (character))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))))))) consequence: (compound_statement (return_statement (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (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: (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: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))))))) condition: (parenthesized_expression (true))))))

int __regparm3 MASKED(int param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  bool bVar6;
  
  cVar4 = *(char *)(param_1 + 1);
  iVar5 = 1;
  iVar3 = param_1 + 1;
  cVar2 = cVar4 + -0x3a;
  bVar6 = cVar4 == ':';
  if (bVar6) goto LAB_00026e9c;
  do {
    if (bVar6 || SBORROW1(cVar4,':') != cVar2 < '\0') {
      if ((cVar4 == '\0') || ((cVar4 == '.' && (iVar5 = iVar5 + -1, param_1 = iVar3, iVar5 == 0))))
      {
        return param_1;
      }
    }
    else if (cVar4 == '?') {
      iVar5 = iVar5 + 1;
    }
    else if (cVar4 == '\\') {
      iVar3 = param_1 + 2;
    }
    while( true ) {
      cVar4 = *(char *)(iVar3 + 1);
      iVar1 = iVar3 + 1;
      cVar2 = cVar4 + -0x3a;
      bVar6 = cVar2 == '\0';
      param_1 = iVar3;
      iVar3 = iVar1;
      if (!bVar6) break;
LAB_00026e9c:
      if (iVar5 == 1) {
        return iVar3;
      }
    }
  } while( true );
}

