
int sqlite3BtreePrevious(BtCursor *pCur,int flags)

{
  u8 uVar1;
  int iVar2;
  
  pCur->curFlags = pCur->curFlags & 0xf1;
  uVar1 = pCur->eState;
  (pCur->info).nSize = 0;
  if (((uVar1 == '\0') && (pCur->ix != 0)) && (pCur->pPage->leaf != '\0')) {
    pCur->ix = pCur->ix - 1;
    return 0;
  }
  iVar2 = btreePrevious(pCur);
  return iVar2;
}



undefined4 FUN_00084810(char *param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  param_1[1] = param_1[1] & 0xf1;
  cVar1 = *param_1;
  param_1[0x2e] = '\0';
  param_1[0x2f] = '\0';
  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&
     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {
    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;
    return 0;
  }
  uVar2 = FUN_000846f0();
  return uVar2;
}


MOV EAX,dword ptr [ESP + 0x4]
XOR EDX,EDX
AND byte ptr [EAX + 0x1],0xf1
CMP byte ptr [EAX],0x0
MOV word ptr [EAX + 0x2e],DX
JNZ 0x00084840
MOVZX EDX,word ptr [EAX + 0x3e]
TEST DX,DX
JZ 0x00084840
MOV ECX,dword ptr [EAX + 0x6c]
CMP byte ptr [ECX + 0x8],0x0
JZ 0x00084840
SUB EDX,0x1
MOV word ptr [EAX + 0x3e],DX
XOR EAX,EAX
RET
JMP 0x000846f0
(translation_unit "undefined4 FUN_00084810(char *param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  param_1[1] = param_1[1] & 0xf1;\n  cVar1 = *param_1;\n  param_1[0x2e] = '\0';\n  param_1[0x2f] = '\0';\n  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }\n  uVar2 = FUN_000846f0();\n  return uVar2;\n}\n\n" (function_definition "undefined4 FUN_00084810(char *param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  param_1[1] = param_1[1] & 0xf1;\n  cVar1 = *param_1;\n  param_1[0x2e] = '\0';\n  param_1[0x2f] = '\0';\n  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }\n  uVar2 = FUN_000846f0();\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00084810(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  \n  param_1[1] = param_1[1] & 0xf1;\n  cVar1 = *param_1;\n  param_1[0x2e] = '\0';\n  param_1[0x2f] = '\0';\n  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }\n  uVar2 = FUN_000846f0();\n  return uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (expression_statement "param_1[1] = param_1[1] & 0xf1;" (assignment_expression "param_1[1] = param_1[1] & 0xf1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] & 0xf1" (subscript_expression "param_1[1]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "cVar1 = *param_1;" (assignment_expression "cVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_1[0x2e] = '\0';" (assignment_expression "param_1[0x2e] = '\0'" (subscript_expression "param_1[0x2e]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x2f] = '\0';" (assignment_expression "param_1[0x2f] = '\0'" (subscript_expression "param_1[0x2f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }" if (parenthesized_expression "(((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0'))" ( (binary_expression "((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')" (parenthesized_expression "((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0))" ( (binary_expression "(cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(short *)(param_1 + 0x3e) != 0)" ( (binary_expression "*(short *)(param_1 + 0x3e) != 0" (pointer_expression "*(short *)(param_1 + 0x3e)" * (cast_expression "(short *)(param_1 + 0x3e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x6c) + 8)" * (cast_expression "(char *)(*(int *)(param_1 + 0x6c) + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 8)" ( (binary_expression "*(int *)(param_1 + 0x6c) + 8" (pointer_expression "*(int *)(param_1 + 0x6c)" * (cast_expression "(int *)(param_1 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }" { (expression_statement "*(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;" (assignment_expression "*(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1" (pointer_expression "*(short *)(param_1 + 0x3e)" * (cast_expression "(short *)(param_1 + 0x3e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) )))) = (binary_expression "*(short *)(param_1 + 0x3e) + -1" (pointer_expression "*(short *)(param_1 + 0x3e)" * (cast_expression "(short *)(param_1 + 0x3e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = FUN_000846f0();" (assignment_expression "uVar2 = FUN_000846f0()" identifier = (call_expression "FUN_000846f0()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "int sqlite3BtreePrevious(BtCursor *pCur,int flags)\n\n{\n  u8 uVar1;\n  int iVar2;\n  \n  pCur->curFlags = pCur->curFlags & 0xf1;\n  uVar1 = pCur->eState;\n  (pCur->info).nSize = 0;\n  if (((uVar1 == '\0') && (pCur->ix != 0)) && (pCur->pPage->leaf != '\0')) {\n    pCur->ix = pCur->ix - 1;\n    return 0;\n  }\n  iVar2 = btreePrevious(pCur);\n  return iVar2;\n}\n\n" (function_definition "int sqlite3BtreePrevious(BtCursor *pCur,int flags)\n\n{\n  u8 uVar1;\n  int iVar2;\n  \n  pCur->curFlags = pCur->curFlags & 0xf1;\n  uVar1 = pCur->eState;\n  (pCur->info).nSize = 0;\n  if (((uVar1 == '\0') && (pCur->ix != 0)) && (pCur->pPage->leaf != '\0')) {\n    pCur->ix = pCur->ix - 1;\n    return 0;\n  }\n  iVar2 = btreePrevious(pCur);\n  return iVar2;\n}" primitive_type (function_declarator "sqlite3BtreePrevious(BtCursor *pCur,int flags)" identifier (parameter_list "(BtCursor *pCur,int flags)" ( (parameter_declaration "BtCursor *pCur" type_identifier (pointer_declarator "*pCur" * identifier)) , (parameter_declaration "int flags" primitive_type identifier) ))) (compound_statement "{\n  u8 uVar1;\n  int iVar2;\n  \n  pCur->curFlags = pCur->curFlags & 0xf1;\n  uVar1 = pCur->eState;\n  (pCur->info).nSize = 0;\n  if (((uVar1 == '\0') && (pCur->ix != 0)) && (pCur->pPage->leaf != '\0')) {\n    pCur->ix = pCur->ix - 1;\n    return 0;\n  }\n  iVar2 = btreePrevious(pCur);\n  return iVar2;\n}" { (declaration "u8 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "pCur->curFlags = pCur->curFlags & 0xf1;" (assignment_expression "pCur->curFlags = pCur->curFlags & 0xf1" (field_expression "pCur->curFlags" identifier -> field_identifier) = (binary_expression "pCur->curFlags & 0xf1" (field_expression "pCur->curFlags" identifier -> field_identifier) & number_literal)) ;) (expression_statement "uVar1 = pCur->eState;" (assignment_expression "uVar1 = pCur->eState" identifier = (field_expression "pCur->eState" identifier -> field_identifier)) ;) (expression_statement "(pCur->info).nSize = 0;" (assignment_expression "(pCur->info).nSize = 0" (field_expression "(pCur->info).nSize" (parenthesized_expression "(pCur->info)" ( (field_expression "pCur->info" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (if_statement "if (((uVar1 == '\0') && (pCur->ix != 0)) && (pCur->pPage->leaf != '\0')) {\n    pCur->ix = pCur->ix - 1;\n    return 0;\n  }" if (parenthesized_expression "(((uVar1 == '\0') && (pCur->ix != 0)) && (pCur->pPage->leaf != '\0'))" ( (binary_expression "((uVar1 == '\0') && (pCur->ix != 0)) && (pCur->pPage->leaf != '\0')" (parenthesized_expression "((uVar1 == '\0') && (pCur->ix != 0))" ( (binary_expression "(uVar1 == '\0') && (pCur->ix != 0)" (parenthesized_expression "(uVar1 == '\0')" ( (binary_expression "uVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pCur->ix != 0)" ( (binary_expression "pCur->ix != 0" (field_expression "pCur->ix" identifier -> field_identifier) != number_literal) ))) )) && (parenthesized_expression "(pCur->pPage->leaf != '\0')" ( (binary_expression "pCur->pPage->leaf != '\0'" (field_expression "pCur->pPage->leaf" (field_expression "pCur->pPage" identifier -> field_identifier) -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    pCur->ix = pCur->ix - 1;\n    return 0;\n  }" { (expression_statement "pCur->ix = pCur->ix - 1;" (assignment_expression "pCur->ix = pCur->ix - 1" (field_expression "pCur->ix" identifier -> field_identifier) = (binary_expression "pCur->ix - 1" (field_expression "pCur->ix" identifier -> field_identifier) - number_literal)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = btreePrevious(pCur);" (assignment_expression "iVar2 = btreePrevious(pCur)" identifier = (call_expression "btreePrevious(pCur)" identifier (argument_list "(pCur)" ( identifier )))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "undefined4 FUN_00084810(char *param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  param_1[1] = param_1[1] & 0xf1;\n  cVar1 = *param_1;\n  param_1[0x2e] = '\0';\n  param_1[0x2f] = '\0';\n  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }\n  uVar2 = FUN_000846f0();\n  return uVar2;\n}\n\n" (function_definition "undefined4 FUN_00084810(char *param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  param_1[1] = param_1[1] & 0xf1;\n  cVar1 = *param_1;\n  param_1[0x2e] = '\0';\n  param_1[0x2f] = '\0';\n  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }\n  uVar2 = FUN_000846f0();\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00084810(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  \n  param_1[1] = param_1[1] & 0xf1;\n  cVar1 = *param_1;\n  param_1[0x2e] = '\0';\n  param_1[0x2f] = '\0';\n  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }\n  uVar2 = FUN_000846f0();\n  return uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (expression_statement "param_1[1] = param_1[1] & 0xf1;" (assignment_expression "param_1[1] = param_1[1] & 0xf1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] & 0xf1" (subscript_expression "param_1[1]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "cVar1 = *param_1;" (assignment_expression "cVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_1[0x2e] = '\0';" (assignment_expression "param_1[0x2e] = '\0'" (subscript_expression "param_1[0x2e]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x2f] = '\0';" (assignment_expression "param_1[0x2f] = '\0'" (subscript_expression "param_1[0x2f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }" if (parenthesized_expression "(((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0'))" ( (binary_expression "((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')" (parenthesized_expression "((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0))" ( (binary_expression "(cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(short *)(param_1 + 0x3e) != 0)" ( (binary_expression "*(short *)(param_1 + 0x3e) != 0" (pointer_expression "*(short *)(param_1 + 0x3e)" * (cast_expression "(short *)(param_1 + 0x3e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x6c) + 8)" * (cast_expression "(char *)(*(int *)(param_1 + 0x6c) + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 8)" ( (binary_expression "*(int *)(param_1 + 0x6c) + 8" (pointer_expression "*(int *)(param_1 + 0x6c)" * (cast_expression "(int *)(param_1 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }" { (expression_statement "*(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;" (assignment_expression "*(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1" (pointer_expression "*(short *)(param_1 + 0x3e)" * (cast_expression "(short *)(param_1 + 0x3e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) )))) = (binary_expression "*(short *)(param_1 + 0x3e) + -1" (pointer_expression "*(short *)(param_1 + 0x3e)" * (cast_expression "(short *)(param_1 + 0x3e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = FUN_000846f0();" (assignment_expression "uVar2 = FUN_000846f0()" identifier = (call_expression "FUN_000846f0()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_00084810(char *param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  param_1[1] = param_1[1] & 0xf1;\n  cVar1 = *param_1;\n  param_1[0x2e] = '\0';\n  param_1[0x2f] = '\0';\n  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }\n  uVar2 = FUN_000846f0();\n  return uVar2;\n}" (type_identifier "undefined4") (function_declarator "FUN_00084810(char *param_1)" (identifier "FUN_00084810") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  \n  param_1[1] = param_1[1] & 0xf1;\n  cVar1 = *param_1;\n  param_1[0x2e] = '\0';\n  param_1[0x2f] = '\0';\n  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }\n  uVar2 = FUN_000846f0();\n  return uVar2;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (expression_statement "param_1[1] = param_1[1] & 0xf1;" (assignment_expression "param_1[1] = param_1[1] & 0xf1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_1[1] & 0xf1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xf1"))) (; ";")) (expression_statement "cVar1 = *param_1;" (assignment_expression "cVar1 = *param_1" (identifier "cVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "param_1[0x2e] = '\0';" (assignment_expression "param_1[0x2e] = '\0'" (subscript_expression "param_1[0x2e]" (identifier "param_1") ([ "[") (number_literal "0x2e") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[0x2f] = '\0';" (assignment_expression "param_1[0x2f] = '\0'" (subscript_expression "param_1[0x2f]" (identifier "param_1") ([ "[") (number_literal "0x2f") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }" (if "if") (parenthesized_expression "(((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0'))" (( "(") (binary_expression "((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&\n     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')" (parenthesized_expression "((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0))" (( "(") (binary_expression "(cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)" (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(param_1 + 0x3e) != 0)" (( "(") (binary_expression "*(short *)(param_1 + 0x3e) != 0" (pointer_expression "*(short *)(param_1 + 0x3e)" (* "*") (cast_expression "(short *)(param_1 + 0x3e)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3e)" (( "(") (binary_expression "param_1 + 0x3e" (identifier "param_1") (+ "+") (number_literal "0x3e")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x6c) + 8)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 0x6c) + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x6c) + 8" (pointer_expression "*(int *)(param_1 + 0x6c)" (* "*") (cast_expression "(int *)(param_1 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;\n    return 0;\n  }" ({ "{") (expression_statement "*(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;" (assignment_expression "*(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1" (pointer_expression "*(short *)(param_1 + 0x3e)" (* "*") (cast_expression "(short *)(param_1 + 0x3e)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3e)" (( "(") (binary_expression "param_1 + 0x3e" (identifier "param_1") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (binary_expression "*(short *)(param_1 + 0x3e) + -1" (pointer_expression "*(short *)(param_1 + 0x3e)" (* "*") (cast_expression "(short *)(param_1 + 0x3e)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3e)" (( "(") (binary_expression "param_1 + 0x3e" (identifier "param_1") (+ "+") (number_literal "0x3e")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_000846f0();" (assignment_expression "uVar2 = FUN_000846f0()" (identifier "uVar2") (= "=") (call_expression "FUN_000846f0()" (identifier "FUN_000846f0") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

int function_1(type_1 *pCur,int flags)

{
  type_2 var_1;
  int iVar2;
  
  pCur->curFlags = pCur->curFlags & 0xf1;
  var_1 = pCur->eState;
  (pCur->info).nSize = 0;
  if (((var_1 == '\0') && (pCur->ix != 0)) && (pCur->pPage->leaf != '\0')) {
    pCur->ix = pCur->ix - 1;
    return 0;
  }
  iVar2 = var_2(pCur);
  return iVar2;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (return_statement (identifier)))))

undefined4 MASKED(char *param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  param_1[1] = param_1[1] & 0xf1;
  cVar1 = *param_1;
  param_1[0x2e] = '\0';
  param_1[0x2f] = '\0';
  if (((cVar1 == '\0') && (*(short *)(param_1 + 0x3e) != 0)) &&
     (*(char *)(*(int *)(param_1 + 0x6c) + 8) != '\0')) {
    *(short *)(param_1 + 0x3e) = *(short *)(param_1 + 0x3e) + -1;
    return 0;
  }
  uVar2 = FUN_000846f0();
  return uVar2;
}

