
void __regparm3 hist_string_extract_single_quoted(char *string,int *sindex,int flags)

{
  char cVar1;
  int iVar2;
  
  iVar2 = *sindex;
  cVar1 = string[iVar2];
  if ((cVar1 != '\0') && (cVar1 != '\'')) {
    do {
      if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {
        iVar2 = iVar2 + 2;
        cVar1 = string[iVar2];
      }
      else {
        cVar1 = string[iVar2 + 1];
        iVar2 = iVar2 + 1;
      }
    } while ((cVar1 != '\0') && (cVar1 != '\''));
    *sindex = iVar2;
    return;
  }
  *sindex = iVar2;
  return;
}



void __regparm3 FUN_000e6020(int param_1,int *param_2,byte param_3)

{
  char cVar1;
  int iVar2;
  
  iVar2 = *param_2;
  cVar1 = *(char *)(param_1 + iVar2);
  if ((cVar1 != '\0') && (cVar1 != '\'')) {
    do {
      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {
        iVar2 = iVar2 + 2;
        cVar1 = *(char *)(param_1 + iVar2);
      }
      else {
        cVar1 = *(char *)(param_1 + iVar2 + 1);
        iVar2 = iVar2 + 1;
      }
    } while ((cVar1 != '\0') && (cVar1 != '\''));
    *param_2 = iVar2;
    return;
  }
  *param_2 = iVar2;
  return;
}


PUSH EBP
PUSH EDI
MOV EDI,dword ptr [EDX]
PUSH ESI
PUSH EBX
MOVZX EBX,byte ptr [EAX + EDI*0x1]
TEST BL,BL
JZ 0x000e6080
CMP BL,0x27
JZ 0x000e6080
MOV EBP,EDI
AND ECX,0x1
JMP 0x000e6051
MOVZX EBX,byte ptr [EAX + ESI*0x1]
MOV EBP,ESI
MOV EDI,ESI
TEST BL,BL
JZ 0x000e6073
CMP BL,0x27
JZ 0x000e6073
LEA ESI,[EDI + 0x1]
CMP BL,0x5c
JNZ 0x000e6040
TEST CL,CL
JZ 0x000e6040
CMP byte ptr [EAX + EBP*0x1 + 0x1],0x0
JZ 0x000e6040
LEA ESI,[EDI + 0x2]
MOVZX EBX,byte ptr [EAX + ESI*0x1]
MOV EBP,ESI
MOV EDI,ESI
TEST BL,BL
JNZ 0x000e604c
POP EBX
MOV dword ptr [EDX],ESI
POP ESI
POP EDI
POP EBP
RET
MOV ESI,EDI
POP EBX
MOV dword ptr [EDX],ESI
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void __regparm3 FUN_000e6020(int param_1,int *param_2,byte param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *param_2;\n  cVar1 = *(char *)(param_1 + iVar2);\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }\n  *param_2 = iVar2;\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_000e6020(int param_1,int *param_2,byte param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *param_2;\n  cVar1 = *(char *)(param_1 + iVar2);\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }\n  *param_2 = iVar2;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000e6020(int param_1,int *param_2,byte param_3)" identifier (parameter_list "(int param_1,int *param_2,byte param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte param_3" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *param_2;\n  cVar1 = *(char *)(param_1 + iVar2);\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }\n  *param_2 = iVar2;\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "cVar1 = *(char *)(param_1 + iVar2);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2)" identifier = (pointer_expression "*(char *)(param_1 + iVar2)" * (cast_expression "(char *)(param_1 + iVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar2)" ( (binary_expression "param_1 + iVar2" identifier + identifier) ))))) ;) (if_statement "if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }" if (parenthesized_expression "((cVar1 != '\0') && (cVar1 != '\''))" ( (binary_expression "(cVar1 != '\0') && (cVar1 != '\'')" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar1 != '\'')" ( (binary_expression "cVar1 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) (compound_statement "{\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }" { (do_statement "do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));" do (compound_statement "{\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    }" { (if_statement "if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" if (parenthesized_expression "(((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0'))" ( (binary_expression "((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')" (parenthesized_expression "((cVar1 == '\\') && ((param_3 & 1) != 0))" ( (binary_expression "(cVar1 == '\\') && ((param_3 & 1) != 0)" (parenthesized_expression "(cVar1 == '\\')" ( (binary_expression "cVar1 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence ')) )) && (parenthesized_expression "((param_3 & 1) != 0)" ( (binary_expression "(param_3 & 1) != 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(*(char *)(param_1 + 1 + iVar2) != '\0')" ( (binary_expression "*(char *)(param_1 + 1 + iVar2) != '\0'" (pointer_expression "*(char *)(param_1 + 1 + iVar2)" * (cast_expression "(char *)(param_1 + 1 + iVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1 + iVar2)" ( (binary_expression "param_1 + 1 + iVar2" (binary_expression "param_1 + 1" identifier + number_literal) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }" { (expression_statement "iVar2 = iVar2 + 2;" (assignment_expression "iVar2 = iVar2 + 2" identifier = (binary_expression "iVar2 + 2" identifier + number_literal)) ;) (expression_statement "cVar1 = *(char *)(param_1 + iVar2);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2)" identifier = (pointer_expression "*(char *)(param_1 + iVar2)" * (cast_expression "(char *)(param_1 + iVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar2)" ( (binary_expression "param_1 + iVar2" identifier + identifier) ))))) ;) }) (else_clause "else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" else (compound_statement "{\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" { (expression_statement "cVar1 = *(char *)(param_1 + iVar2 + 1);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2 + 1)" identifier = (pointer_expression "*(char *)(param_1 + iVar2 + 1)" * (cast_expression "(char *)(param_1 + iVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar2 + 1)" ( (binary_expression "param_1 + iVar2 + 1" (binary_expression "param_1 + iVar2" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "((cVar1 != '\0') && (cVar1 != '\''))" ( (binary_expression "(cVar1 != '\0') && (cVar1 != '\'')" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar1 != '\'')" ( (binary_expression "cVar1 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) ;) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 hist_string_extract_single_quoted(char *string,int *sindex,int flags)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *sindex;\n  cVar1 = string[iVar2];\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }\n      else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *sindex = iVar2;\n    return;\n  }\n  *sindex = iVar2;\n  return;\n}\n\n" (function_definition "void __regparm3 hist_string_extract_single_quoted(char *string,int *sindex,int flags)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *sindex;\n  cVar1 = string[iVar2];\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }\n      else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *sindex = iVar2;\n    return;\n  }\n  *sindex = iVar2;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "hist_string_extract_single_quoted(char *string,int *sindex,int flags)" identifier (parameter_list "(char *string,int *sindex,int flags)" ( (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "int *sindex" primitive_type (pointer_declarator "*sindex" * identifier)) , (parameter_declaration "int flags" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *sindex;\n  cVar1 = string[iVar2];\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }\n      else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *sindex = iVar2;\n    return;\n  }\n  *sindex = iVar2;\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "iVar2 = *sindex;" (assignment_expression "iVar2 = *sindex" identifier = (pointer_expression "*sindex" * identifier)) ;) (expression_statement "cVar1 = string[iVar2];" (assignment_expression "cVar1 = string[iVar2]" identifier = (subscript_expression "string[iVar2]" identifier [ identifier ])) ;) (if_statement "if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }\n      else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *sindex = iVar2;\n    return;\n  }" if (parenthesized_expression "((cVar1 != '\0') && (cVar1 != '\''))" ( (binary_expression "(cVar1 != '\0') && (cVar1 != '\'')" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar1 != '\'')" ( (binary_expression "cVar1 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) (compound_statement "{\n    do {\n      if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }\n      else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *sindex = iVar2;\n    return;\n  }" { (do_statement "do {\n      if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }\n      else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));" do (compound_statement "{\n      if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }\n      else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }\n    }" { (if_statement "if (((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }\n      else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }" if (parenthesized_expression "(((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0'))" ( (binary_expression "((cVar1 == '\\') && ((flags & 1U) != 0)) && (string[iVar2 + 1] != '\0')" (parenthesized_expression "((cVar1 == '\\') && ((flags & 1U) != 0))" ( (binary_expression "(cVar1 == '\\') && ((flags & 1U) != 0)" (parenthesized_expression "(cVar1 == '\\')" ( (binary_expression "cVar1 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence ')) )) && (parenthesized_expression "((flags & 1U) != 0)" ( (binary_expression "(flags & 1U) != 0" (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(string[iVar2 + 1] != '\0')" ( (binary_expression "string[iVar2 + 1] != '\0'" (subscript_expression "string[iVar2 + 1]" identifier [ (binary_expression "iVar2 + 1" identifier + number_literal) ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        iVar2 = iVar2 + 2;\n        cVar1 = string[iVar2];\n      }" { (expression_statement "iVar2 = iVar2 + 2;" (assignment_expression "iVar2 = iVar2 + 2" identifier = (binary_expression "iVar2 + 2" identifier + number_literal)) ;) (expression_statement "cVar1 = string[iVar2];" (assignment_expression "cVar1 = string[iVar2]" identifier = (subscript_expression "string[iVar2]" identifier [ identifier ])) ;) }) (else_clause "else {\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }" else (compound_statement "{\n        cVar1 = string[iVar2 + 1];\n        iVar2 = iVar2 + 1;\n      }" { (expression_statement "cVar1 = string[iVar2 + 1];" (assignment_expression "cVar1 = string[iVar2 + 1]" identifier = (subscript_expression "string[iVar2 + 1]" identifier [ (binary_expression "iVar2 + 1" identifier + number_literal) ])) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "((cVar1 != '\0') && (cVar1 != '\''))" ( (binary_expression "(cVar1 != '\0') && (cVar1 != '\'')" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar1 != '\'')" ( (binary_expression "cVar1 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) ;) (expression_statement "*sindex = iVar2;" (assignment_expression "*sindex = iVar2" (pointer_expression "*sindex" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*sindex = iVar2;" (assignment_expression "*sindex = iVar2" (pointer_expression "*sindex" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_000e6020(int param_1,int *param_2,byte param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *param_2;\n  cVar1 = *(char *)(param_1 + iVar2);\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }\n  *param_2 = iVar2;\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_000e6020(int param_1,int *param_2,byte param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *param_2;\n  cVar1 = *(char *)(param_1 + iVar2);\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }\n  *param_2 = iVar2;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000e6020(int param_1,int *param_2,byte param_3)" identifier (parameter_list "(int param_1,int *param_2,byte param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte param_3" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *param_2;\n  cVar1 = *(char *)(param_1 + iVar2);\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }\n  *param_2 = iVar2;\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "cVar1 = *(char *)(param_1 + iVar2);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2)" identifier = (pointer_expression "*(char *)(param_1 + iVar2)" * (cast_expression "(char *)(param_1 + iVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar2)" ( (binary_expression "param_1 + iVar2" identifier + identifier) ))))) ;) (if_statement "if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }" if (parenthesized_expression "((cVar1 != '\0') && (cVar1 != '\''))" ( (binary_expression "(cVar1 != '\0') && (cVar1 != '\'')" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar1 != '\'')" ( (binary_expression "cVar1 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) (compound_statement "{\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }" { (do_statement "do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));" do (compound_statement "{\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    }" { (if_statement "if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" if (parenthesized_expression "(((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0'))" ( (binary_expression "((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')" (parenthesized_expression "((cVar1 == '\\') && ((param_3 & 1) != 0))" ( (binary_expression "(cVar1 == '\\') && ((param_3 & 1) != 0)" (parenthesized_expression "(cVar1 == '\\')" ( (binary_expression "cVar1 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence ')) )) && (parenthesized_expression "((param_3 & 1) != 0)" ( (binary_expression "(param_3 & 1) != 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(*(char *)(param_1 + 1 + iVar2) != '\0')" ( (binary_expression "*(char *)(param_1 + 1 + iVar2) != '\0'" (pointer_expression "*(char *)(param_1 + 1 + iVar2)" * (cast_expression "(char *)(param_1 + 1 + iVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1 + iVar2)" ( (binary_expression "param_1 + 1 + iVar2" (binary_expression "param_1 + 1" identifier + number_literal) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }" { (expression_statement "iVar2 = iVar2 + 2;" (assignment_expression "iVar2 = iVar2 + 2" identifier = (binary_expression "iVar2 + 2" identifier + number_literal)) ;) (expression_statement "cVar1 = *(char *)(param_1 + iVar2);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2)" identifier = (pointer_expression "*(char *)(param_1 + iVar2)" * (cast_expression "(char *)(param_1 + iVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar2)" ( (binary_expression "param_1 + iVar2" identifier + identifier) ))))) ;) }) (else_clause "else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" else (compound_statement "{\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" { (expression_statement "cVar1 = *(char *)(param_1 + iVar2 + 1);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2 + 1)" identifier = (pointer_expression "*(char *)(param_1 + iVar2 + 1)" * (cast_expression "(char *)(param_1 + iVar2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar2 + 1)" ( (binary_expression "param_1 + iVar2 + 1" (binary_expression "param_1 + iVar2" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "((cVar1 != '\0') && (cVar1 != '\''))" ( (binary_expression "(cVar1 != '\0') && (cVar1 != '\'')" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar1 != '\'')" ( (binary_expression "cVar1 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) ;) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_000e6020(int param_1,int *param_2,byte param_3)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *param_2;\n  cVar1 = *(char *)(param_1 + iVar2);\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }\n  *param_2 = iVar2;\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000e6020(int param_1,int *param_2,byte param_3)" (identifier "FUN_000e6020") (parameter_list "(int param_1,int *param_2,byte param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte param_3" (type_identifier "byte") (identifier "param_3")) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  \n  iVar2 = *param_2;\n  cVar1 = *(char *)(param_1 + iVar2);\n  if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }\n  *param_2 = iVar2;\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (expression_statement "iVar2 = *param_2;" (assignment_expression "iVar2 = *param_2" (identifier "iVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "cVar1 = *(char *)(param_1 + iVar2);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(param_1 + iVar2)" (* "*") (cast_expression "(char *)(param_1 + iVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar2)" (( "(") (binary_expression "param_1 + iVar2" (identifier "param_1") (+ "+") (identifier "iVar2")) () ")"))))) (; ";")) (if_statement "if ((cVar1 != '\0') && (cVar1 != '\'')) {\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }" (if "if") (parenthesized_expression "((cVar1 != '\0') && (cVar1 != '\''))" (( "(") (binary_expression "(cVar1 != '\0') && (cVar1 != '\'')" (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(cVar1 != '\'')" (( "(") (binary_expression "cVar1 != '\''" (identifier "cVar1") (!= "!=") (char_literal "'\''" (' "'") (escape_sequence "\'") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));\n    *param_2 = iVar2;\n    return;\n  }" ({ "{") (do_statement "do {\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    } while ((cVar1 != '\0') && (cVar1 != '\''));" (do "do") (compound_statement "{\n      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }\n    }" ({ "{") (if_statement "if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }\n      else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" (if "if") (parenthesized_expression "(((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0'))" (( "(") (binary_expression "((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')" (parenthesized_expression "((cVar1 == '\\') && ((param_3 & 1) != 0))" (( "(") (binary_expression "(cVar1 == '\\') && ((param_3 & 1) != 0)" (parenthesized_expression "(cVar1 == '\\')" (( "(") (binary_expression "cVar1 == '\\'" (identifier "cVar1") (== "==") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((param_3 & 1) != 0)" (( "(") (binary_expression "(param_3 & 1) != 0" (parenthesized_expression "(param_3 & 1)" (( "(") (binary_expression "param_3 & 1" (identifier "param_3") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 1 + iVar2) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 1 + iVar2) != '\0'" (pointer_expression "*(char *)(param_1 + 1 + iVar2)" (* "*") (cast_expression "(char *)(param_1 + 1 + iVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1 + iVar2)" (( "(") (binary_expression "param_1 + 1 + iVar2" (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) (+ "+") (identifier "iVar2")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        iVar2 = iVar2 + 2;\n        cVar1 = *(char *)(param_1 + iVar2);\n      }" ({ "{") (expression_statement "iVar2 = iVar2 + 2;" (assignment_expression "iVar2 = iVar2 + 2" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 2" (identifier "iVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "cVar1 = *(char *)(param_1 + iVar2);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(param_1 + iVar2)" (* "*") (cast_expression "(char *)(param_1 + iVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar2)" (( "(") (binary_expression "param_1 + iVar2" (identifier "param_1") (+ "+") (identifier "iVar2")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" (else "else") (compound_statement "{\n        cVar1 = *(char *)(param_1 + iVar2 + 1);\n        iVar2 = iVar2 + 1;\n      }" ({ "{") (expression_statement "cVar1 = *(char *)(param_1 + iVar2 + 1);" (assignment_expression "cVar1 = *(char *)(param_1 + iVar2 + 1)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(param_1 + iVar2 + 1)" (* "*") (cast_expression "(char *)(param_1 + iVar2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar2 + 1)" (( "(") (binary_expression "param_1 + iVar2 + 1" (binary_expression "param_1 + iVar2" (identifier "param_1") (+ "+") (identifier "iVar2")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "((cVar1 != '\0') && (cVar1 != '\''))" (( "(") (binary_expression "(cVar1 != '\0') && (cVar1 != '\'')" (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(cVar1 != '\'')" (( "(") (binary_expression "cVar1 != '\''" (identifier "cVar1") (!= "!=") (char_literal "'\''" (' "'") (escape_sequence "\'") (' "'"))) () ")"))) () ")")) (; ";")) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void __regparm3 function_1(char *string,int *sindex,int var_2)

{
  char var_1;
  int var_3;
  
  var_3 = *sindex;
  var_1 = string[var_3];
  if ((var_1 != '\0') && (var_1 != '\'')) {
    do {
      if (((var_1 == '\\') && ((var_2 & 1U) != 0)) && (string[var_3 + 1] != '\0')) {
        var_3 = var_3 + 2;
        var_1 = string[var_3];
      }
      else {
        var_1 = string[var_3 + 1];
        var_3 = var_3 + 1;
      }
    } while ((var_1 != '\0') && (var_1 != '\''));
    *sindex = var_3;
    return;
  }
  *sindex = var_3;
  return;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (char_literal (escape_sequence)))))) consequence: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) alternative: (else_clause (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement))))

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

{
  char cVar1;
  int iVar2;
  
  iVar2 = *param_2;
  cVar1 = *(char *)(param_1 + iVar2);
  if ((cVar1 != '\0') && (cVar1 != '\'')) {
    do {
      if (((cVar1 == '\\') && ((param_3 & 1) != 0)) && (*(char *)(param_1 + 1 + iVar2) != '\0')) {
        iVar2 = iVar2 + 2;
        cVar1 = *(char *)(param_1 + iVar2);
      }
      else {
        cVar1 = *(char *)(param_1 + iVar2 + 1);
        iVar2 = iVar2 + 1;
      }
    } while ((cVar1 != '\0') && (cVar1 != '\''));
    *param_2 = iVar2;
    return;
  }
  *param_2 = iVar2;
  return;
}

