
int __regparm3 btreeNext(BtCursor *pCur)

{
  MemPage *pMVar1;
  uint uVar2;
  byte bVar3;
  ushort uVar4;
  int iVar5;
  
  bVar3 = pCur->eState;
  if (bVar3 != 0) {
    if (2 < bVar3) {
      if (bVar3 == 4) {
        if (pCur->skipNext != 0) {
          return pCur->skipNext;
        }
        goto LAB_00083491;
      }
      iVar5 = btreeRestoreCursorPosition(pCur);
      if (iVar5 != 0) {
        return iVar5;
      }
      bVar3 = pCur->eState;
    }
    if (bVar3 == 1) {
      return 0x65;
    }
    if ((bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)) {
      return 0;
    }
  }
LAB_00083491:
  pMVar1 = pCur->pPage;
  uVar4 = pCur->ix + 1;
  pCur->ix = uVar4;
  if (pMVar1->isInit == '\0') {
    iVar5 = sqlite3CorruptError(0x10c6d);
    return iVar5;
  }
  if (uVar4 < pMVar1->nCell) {
    if (pMVar1->leaf == '\0') goto LAB_00083548;
  }
  else {
    if (pMVar1->leaf == '\0') {
      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);
      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |
                               uVar2 << 0x18);
      if (iVar5 != 0) {
        return iVar5;
      }
LAB_00083548:
      iVar5 = moveToLeftmost(pCur);
      return iVar5;
    }
    do {
      if (pCur->iPage == '\0') {
        pCur->eState = '\x01';
        return 0x65;
      }
      moveToParent(pCur);
    } while (pCur->pPage->nCell <= pCur->ix);
    if (pCur->pPage->intKey != '\0') {
      iVar5 = sqlite3BtreeNext(pCur,0);
      return iVar5;
    }
  }
  return 0;
}



int __regparm3 FUN_00083470(byte *param_1)

{
  short sVar1;
  char *pcVar2;
  byte bVar3;
  int iVar4;
  
  bVar3 = *param_1;
  if (bVar3 != 0) {
    if (2 < bVar3) {
      if (bVar3 == 4) {
        if (*(int *)(param_1 + 4) != 0) {
          return *(int *)(param_1 + 4);
        }
        goto LAB_00083491;
      }
      iVar4 = FUN_00082e40();
      if (iVar4 != 0) {
        return iVar4;
      }
      bVar3 = *param_1;
    }
    if (bVar3 == 1) {
      return 0x65;
    }
    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {
      return 0;
    }
  }
LAB_00083491:
  sVar1 = *(short *)(param_1 + 0x3e);
  pcVar2 = *(char **)(param_1 + 0x6c);
  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;
  if (*pcVar2 == '\0') {
    iVar4 = FUN_00051360();
    return iVar4;
  }
  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {
    if (pcVar2[8] == '\0') goto LAB_00083548;
  }
  else {
    if (pcVar2[8] == '\0') {
      iVar4 = FUN_00051d70();
      if (iVar4 != 0) {
        return iVar4;
      }
LAB_00083548:
      iVar4 = FUN_00051e30();
      return iVar4;
    }
    do {
      if (param_1[0x3c] == 0) {
        *param_1 = 1;
        return 0x65;
      }
      FUN_0001b760();
    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));
    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {
      iVar4 = FUN_000835b0(param_1,0);
      return iVar4;
    }
  }
  return 0;
}


PUSH EBX
MOV EBX,EAX
SUB ESP,0x8
MOVZX EAX,byte ptr [EAX]
TEST AL,AL
JZ 0x00083491
CMP AL,0x2
JA 0x00083500
CMP AL,0x1
JZ 0x000835a0
CMP AL,0x2
JZ 0x00083520
MOVZX EAX,word ptr [EBX + 0x3e]
MOV EDX,dword ptr [EBX + 0x6c]
ADD EAX,0x1
MOV word ptr [EBX + 0x3e],AX
CMP byte ptr [EDX],0x0
JZ 0x00083568
MOVZX ECX,byte ptr [EDX + 0x8]
CMP AX,word ptr [EDX + 0x16]
JC 0x000834f0
TEST CL,CL
JNZ 0x000834d8
JMP 0x00083530
MOV EAX,EBX
CALL 0x0001b760
MOV EAX,dword ptr [EBX + 0x6c]
MOVZX ECX,word ptr [EAX + 0x16]
CMP word ptr [EBX + 0x3e],CX
JC 0x00083580
CMP byte ptr [EBX + 0x3c],0x0
JNZ 0x000834c0
MOV byte ptr [EBX],0x1
ADD ESP,0x8
MOV EAX,0x65
POP EBX
RET
TEST CL,CL
JZ 0x00083548
XOR EAX,EAX
ADD ESP,0x8
POP EBX
RET
CMP AL,0x4
JZ 0x00083558
MOV EAX,EBX
CALL 0x00082e40
TEST EAX,EAX
JNZ 0x000834f6
MOVZX EAX,byte ptr [EBX]
JMP 0x00083481
MOV EAX,dword ptr [EBX + 0x4]
MOV byte ptr [EBX],0x0
TEST EAX,EAX
JLE 0x00083491
JMP 0x000834f4
MOVZX EAX,byte ptr [EDX + 0x9]
MOV EDX,dword ptr [EDX + 0x38]
MOV EDX,dword ptr [EDX + EAX*0x1 + 0x8]
MOV EAX,EBX
BSWAP EDX
CALL 0x00051d70
TEST EAX,EAX
JNZ 0x000834f6
ADD ESP,0x8
MOV EAX,EBX
POP EBX
JMP 0x00051e30
MOV EAX,dword ptr [EBX + 0x4]
TEST EAX,EAX
JZ 0x00083491
JMP 0x000834f6
ADD ESP,0x8
MOV EAX,0x10c6d
POP EBX
JMP 0x00051360
CMP byte ptr [EAX + 0x2],0x0
JZ 0x000834f4
SUB ESP,0x8
PUSH 0x0
PUSH EBX
CALL 0x000835b0
ADD ESP,0x10
JMP 0x000834f6
MOV EAX,0x65
JMP 0x000834f6
(translation_unit "int __regparm3 FUN_00083470(byte *param_1)\n\n{\n  short sVar1;\n  char *pcVar2;\n  byte bVar3;\n  int iVar4;\n  \n  bVar3 = *param_1;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);\n  pcVar2 = *(char **)(param_1 + 0x6c);\n  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;\n  if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }\n  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_00083470(byte *param_1)\n\n{\n  short sVar1;\n  char *pcVar2;\n  byte bVar3;\n  int iVar4;\n  \n  bVar3 = *param_1;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);\n  pcVar2 = *(char **)(param_1 + 0x6c);\n  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;\n  if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }\n  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00083470(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  short sVar1;\n  char *pcVar2;\n  byte bVar3;\n  int iVar4;\n  \n  bVar3 = *param_1;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);\n  pcVar2 = *(char **)(param_1 + 0x6c);\n  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;\n  if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }\n  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }\n  return 0;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "bVar3 = *param_1;" (assignment_expression "bVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }" { (if_statement "if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }" if (parenthesized_expression "(2 < bVar3)" ( (binary_expression "2 < bVar3" number_literal < identifier) )) (compound_statement "{\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }" { (if_statement "if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }" if (parenthesized_expression "(bVar3 == 4)" ( (binary_expression "bVar3 == 4" identifier == number_literal) )) (compound_statement "{\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }" { (if_statement "if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" ( (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          return *(int *)(param_1 + 4);\n        }" { (return_statement "return *(int *)(param_1 + 4);" return (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) })) (goto_statement "goto LAB_00083491;" goto statement_identifier ;) })) (expression_statement "iVar4 = FUN_00082e40();" (assignment_expression "iVar4 = FUN_00082e40()" identifier = (call_expression "FUN_00082e40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n        return iVar4;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return iVar4;\n      }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "bVar3 = *param_1;" (assignment_expression "bVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (bVar3 == 1) {\n      return 0x65;\n    }" if (parenthesized_expression "(bVar3 == 1)" ( (binary_expression "bVar3 == 1" identifier == number_literal) )) (compound_statement "{\n      return 0x65;\n    }" { (return_statement "return 0x65;" return number_literal ;) })) (if_statement "if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }" if (parenthesized_expression "((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4)))" ( (binary_expression "(bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))" (parenthesized_expression "(bVar3 == 2)" ( (binary_expression "bVar3 == 2" identifier == number_literal) )) && (parenthesized_expression "(*param_1 = 0, 0 < *(int *)(param_1 + 4))" ( (comma_expression "*param_1 = 0, 0 < *(int *)(param_1 + 4)" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) , (binary_expression "0 < *(int *)(param_1 + 4)" number_literal < (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);" statement_identifier : (expression_statement "sVar1 = *(short *)(param_1 + 0x3e);" (assignment_expression "sVar1 = *(short *)(param_1 + 0x3e)" identifier = (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) ))))) ;)) (expression_statement "pcVar2 = *(char **)(param_1 + 0x6c);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x6c)" identifier = (pointer_expression "*(char **)(param_1 + 0x6c)" * (cast_expression "(char **)(param_1 + 0x6c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*(ushort *)(param_1 + 0x3e) = sVar1 + 1U;" (assignment_expression "*(ushort *)(param_1 + 0x3e) = sVar1 + 1U" (pointer_expression "*(ushort *)(param_1 + 0x3e)" * (cast_expression "(ushort *)(param_1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) )))) = (binary_expression "sVar1 + 1U" identifier + number_literal)) ;) (if_statement "if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }" if (parenthesized_expression "(*pcVar2 == '\0')" ( (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }" { (expression_statement "iVar4 = FUN_00051360();" (assignment_expression "iVar4 = FUN_00051360()" identifier = (call_expression "FUN_00051360()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar4;" return identifier ;) })) (if_statement "if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" if (parenthesized_expression "((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16))" ( (binary_expression "(ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)" (call_expression "(ushort)(sVar1 + 1U)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(sVar1 + 1U)" ( (binary_expression "sVar1 + 1U" identifier + number_literal) ))) < (pointer_expression "*(ushort *)(pcVar2 + 0x16)" * (cast_expression "(ushort *)(pcVar2 + 0x16)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar2 + 0x16)" ( (binary_expression "pcVar2 + 0x16" identifier + number_literal) ))))) )) (compound_statement "{\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }" { (if_statement "if (pcVar2[8] == '\0') goto LAB_00083548;" if (parenthesized_expression "(pcVar2[8] == '\0')" ( (binary_expression "pcVar2[8] == '\0'" (subscript_expression "pcVar2[8]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00083548;" goto statement_identifier ;)) }) (else_clause "else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" else (compound_statement "{\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" { (if_statement "if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }" if (parenthesized_expression "(pcVar2[8] == '\0')" ( (binary_expression "pcVar2[8] == '\0'" (subscript_expression "pcVar2[8]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }" { (expression_statement "iVar4 = FUN_00051d70();" (assignment_expression "iVar4 = FUN_00051d70()" identifier = (call_expression "FUN_00051d70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n        return iVar4;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return iVar4;\n      }" { (return_statement "return iVar4;" return identifier ;) })) (labeled_statement "LAB_00083548:\n      iVar4 = FUN_00051e30();" statement_identifier : (expression_statement "iVar4 = FUN_00051e30();" (assignment_expression "iVar4 = FUN_00051e30()" identifier = (call_expression "FUN_00051e30()" identifier (argument_list "()" ( )))) ;)) (return_statement "return iVar4;" return identifier ;) })) (do_statement "do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));" do (compound_statement "{\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    }" { (if_statement "if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }" if (parenthesized_expression "(param_1[0x3c] == 0)" ( (binary_expression "param_1[0x3c] == 0" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *param_1 = 1;\n        return 0x65;\n      }" { (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return 0x65;" return number_literal ;) })) (expression_statement "FUN_0001b760();" (call_expression "FUN_0001b760()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e))" ( (binary_expression "*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e)" (pointer_expression "*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16)" * (cast_expression "(ushort *)(*(int *)(param_1 + 0x6c) + 0x16)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 0x16)" ( (binary_expression "*(int *)(param_1 + 0x6c) + 0x16" (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) )))) <= (pointer_expression "*(ushort *)(param_1 + 0x3e)" * (cast_expression "(ushort *)(param_1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) ))))) )) ;) (if_statement "if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x6c) + 2)" * (cast_expression "(char *)(*(int *)(param_1 + 0x6c) + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 2)" ( (binary_expression "*(int *)(param_1 + 0x6c) + 2" (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      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }" { (expression_statement "iVar4 = FUN_000835b0(param_1,0);" (assignment_expression "iVar4 = FUN_000835b0(param_1,0)" identifier = (call_expression "FUN_000835b0(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (return_statement "return iVar4;" return identifier ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int __regparm3 btreeNext(BtCursor *pCur)\n\n{\n  MemPage *pMVar1;\n  uint uVar2;\n  byte bVar3;\n  ushort uVar4;\n  int iVar5;\n  \n  bVar3 = pCur->eState;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }\n      iVar5 = btreeRestoreCursorPosition(pCur);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\n      bVar3 = pCur->eState;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  pMVar1 = pCur->pPage;\n  uVar4 = pCur->ix + 1;\n  pCur->ix = uVar4;\n  if (pMVar1->isInit == '\0') {\n    iVar5 = sqlite3CorruptError(0x10c6d);\n    return iVar5;\n  }\n  if (uVar4 < pMVar1->nCell) {\n    if (pMVar1->leaf == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pMVar1->leaf == '\0') {\n      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);\n      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\nLAB_00083548:\n      iVar5 = moveToLeftmost(pCur);\n      return iVar5;\n    }\n    do {\n      if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }\n      moveToParent(pCur);\n    } while (pCur->pPage->nCell <= pCur->ix);\n    if (pCur->pPage->intKey != '\0') {\n      iVar5 = sqlite3BtreeNext(pCur,0);\n      return iVar5;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 btreeNext(BtCursor *pCur)\n\n{\n  MemPage *pMVar1;\n  uint uVar2;\n  byte bVar3;\n  ushort uVar4;\n  int iVar5;\n  \n  bVar3 = pCur->eState;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }\n      iVar5 = btreeRestoreCursorPosition(pCur);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\n      bVar3 = pCur->eState;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  pMVar1 = pCur->pPage;\n  uVar4 = pCur->ix + 1;\n  pCur->ix = uVar4;\n  if (pMVar1->isInit == '\0') {\n    iVar5 = sqlite3CorruptError(0x10c6d);\n    return iVar5;\n  }\n  if (uVar4 < pMVar1->nCell) {\n    if (pMVar1->leaf == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pMVar1->leaf == '\0') {\n      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);\n      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\nLAB_00083548:\n      iVar5 = moveToLeftmost(pCur);\n      return iVar5;\n    }\n    do {\n      if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }\n      moveToParent(pCur);\n    } while (pCur->pPage->nCell <= pCur->ix);\n    if (pCur->pPage->intKey != '\0') {\n      iVar5 = sqlite3BtreeNext(pCur,0);\n      return iVar5;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "btreeNext(BtCursor *pCur)" identifier (parameter_list "(BtCursor *pCur)" ( (parameter_declaration "BtCursor *pCur" type_identifier (pointer_declarator "*pCur" * identifier)) ))) (compound_statement "{\n  MemPage *pMVar1;\n  uint uVar2;\n  byte bVar3;\n  ushort uVar4;\n  int iVar5;\n  \n  bVar3 = pCur->eState;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }\n      iVar5 = btreeRestoreCursorPosition(pCur);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\n      bVar3 = pCur->eState;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  pMVar1 = pCur->pPage;\n  uVar4 = pCur->ix + 1;\n  pCur->ix = uVar4;\n  if (pMVar1->isInit == '\0') {\n    iVar5 = sqlite3CorruptError(0x10c6d);\n    return iVar5;\n  }\n  if (uVar4 < pMVar1->nCell) {\n    if (pMVar1->leaf == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pMVar1->leaf == '\0') {\n      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);\n      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\nLAB_00083548:\n      iVar5 = moveToLeftmost(pCur);\n      return iVar5;\n    }\n    do {\n      if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }\n      moveToParent(pCur);\n    } while (pCur->pPage->nCell <= pCur->ix);\n    if (pCur->pPage->intKey != '\0') {\n      iVar5 = sqlite3BtreeNext(pCur,0);\n      return iVar5;\n    }\n  }\n  return 0;\n}" { (declaration "MemPage *pMVar1;" type_identifier (pointer_declarator "*pMVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "bVar3 = pCur->eState;" (assignment_expression "bVar3 = pCur->eState" identifier = (field_expression "pCur->eState" identifier -> field_identifier)) ;) (if_statement "if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }\n      iVar5 = btreeRestoreCursorPosition(pCur);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\n      bVar3 = pCur->eState;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }\n      iVar5 = btreeRestoreCursorPosition(pCur);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\n      bVar3 = pCur->eState;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)) {\n      return 0;\n    }\n  }" { (if_statement "if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }\n      iVar5 = btreeRestoreCursorPosition(pCur);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\n      bVar3 = pCur->eState;\n    }" if (parenthesized_expression "(2 < bVar3)" ( (binary_expression "2 < bVar3" number_literal < identifier) )) (compound_statement "{\n      if (bVar3 == 4) {\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }\n      iVar5 = btreeRestoreCursorPosition(pCur);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\n      bVar3 = pCur->eState;\n    }" { (if_statement "if (bVar3 == 4) {\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }" if (parenthesized_expression "(bVar3 == 4)" ( (binary_expression "bVar3 == 4" identifier == number_literal) )) (compound_statement "{\n        if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }\n        goto LAB_00083491;\n      }" { (if_statement "if (pCur->skipNext != 0) {\n          return pCur->skipNext;\n        }" if (parenthesized_expression "(pCur->skipNext != 0)" ( (binary_expression "pCur->skipNext != 0" (field_expression "pCur->skipNext" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          return pCur->skipNext;\n        }" { (return_statement "return pCur->skipNext;" return (field_expression "pCur->skipNext" identifier -> field_identifier) ;) })) (goto_statement "goto LAB_00083491;" goto statement_identifier ;) })) (expression_statement "iVar5 = btreeRestoreCursorPosition(pCur);" (assignment_expression "iVar5 = btreeRestoreCursorPosition(pCur)" identifier = (call_expression "btreeRestoreCursorPosition(pCur)" identifier (argument_list "(pCur)" ( identifier )))) ;) (if_statement "if (iVar5 != 0) {\n        return iVar5;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        return iVar5;\n      }" { (return_statement "return iVar5;" return identifier ;) })) (expression_statement "bVar3 = pCur->eState;" (assignment_expression "bVar3 = pCur->eState" identifier = (field_expression "pCur->eState" identifier -> field_identifier)) ;) })) (if_statement "if (bVar3 == 1) {\n      return 0x65;\n    }" if (parenthesized_expression "(bVar3 == 1)" ( (binary_expression "bVar3 == 1" identifier == number_literal) )) (compound_statement "{\n      return 0x65;\n    }" { (return_statement "return 0x65;" return number_literal ;) })) (if_statement "if ((bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)) {\n      return 0;\n    }" if (parenthesized_expression "((bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext))" ( (binary_expression "(bVar3 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)" (parenthesized_expression "(bVar3 == 2)" ( (binary_expression "bVar3 == 2" identifier == number_literal) )) && (parenthesized_expression "(pCur->eState = '\0', 0 < pCur->skipNext)" ( (comma_expression "pCur->eState = '\0', 0 < pCur->skipNext" (assignment_expression "pCur->eState = '\0'" (field_expression "pCur->eState" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "0 < pCur->skipNext" number_literal < (field_expression "pCur->skipNext" identifier -> field_identifier))) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_00083491:\n  pMVar1 = pCur->pPage;" statement_identifier : (expression_statement "pMVar1 = pCur->pPage;" (assignment_expression "pMVar1 = pCur->pPage" identifier = (field_expression "pCur->pPage" identifier -> field_identifier)) ;)) (expression_statement "uVar4 = pCur->ix + 1;" (assignment_expression "uVar4 = pCur->ix + 1" identifier = (binary_expression "pCur->ix + 1" (field_expression "pCur->ix" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pCur->ix = uVar4;" (assignment_expression "pCur->ix = uVar4" (field_expression "pCur->ix" identifier -> field_identifier) = identifier) ;) (if_statement "if (pMVar1->isInit == '\0') {\n    iVar5 = sqlite3CorruptError(0x10c6d);\n    return iVar5;\n  }" if (parenthesized_expression "(pMVar1->isInit == '\0')" ( (binary_expression "pMVar1->isInit == '\0'" (field_expression "pMVar1->isInit" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar5 = sqlite3CorruptError(0x10c6d);\n    return iVar5;\n  }" { (expression_statement "iVar5 = sqlite3CorruptError(0x10c6d);" (assignment_expression "iVar5 = sqlite3CorruptError(0x10c6d)" identifier = (call_expression "sqlite3CorruptError(0x10c6d)" identifier (argument_list "(0x10c6d)" ( number_literal )))) ;) (return_statement "return iVar5;" return identifier ;) })) (if_statement "if (uVar4 < pMVar1->nCell) {\n    if (pMVar1->leaf == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pMVar1->leaf == '\0') {\n      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);\n      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\nLAB_00083548:\n      iVar5 = moveToLeftmost(pCur);\n      return iVar5;\n    }\n    do {\n      if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }\n      moveToParent(pCur);\n    } while (pCur->pPage->nCell <= pCur->ix);\n    if (pCur->pPage->intKey != '\0') {\n      iVar5 = sqlite3BtreeNext(pCur,0);\n      return iVar5;\n    }\n  }" if (parenthesized_expression "(uVar4 < pMVar1->nCell)" ( (binary_expression "uVar4 < pMVar1->nCell" identifier < (field_expression "pMVar1->nCell" identifier -> field_identifier)) )) (compound_statement "{\n    if (pMVar1->leaf == '\0') goto LAB_00083548;\n  }" { (if_statement "if (pMVar1->leaf == '\0') goto LAB_00083548;" if (parenthesized_expression "(pMVar1->leaf == '\0')" ( (binary_expression "pMVar1->leaf == '\0'" (field_expression "pMVar1->leaf" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00083548;" goto statement_identifier ;)) }) (else_clause "else {\n    if (pMVar1->leaf == '\0') {\n      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);\n      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\nLAB_00083548:\n      iVar5 = moveToLeftmost(pCur);\n      return iVar5;\n    }\n    do {\n      if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }\n      moveToParent(pCur);\n    } while (pCur->pPage->nCell <= pCur->ix);\n    if (pCur->pPage->intKey != '\0') {\n      iVar5 = sqlite3BtreeNext(pCur,0);\n      return iVar5;\n    }\n  }" else (compound_statement "{\n    if (pMVar1->leaf == '\0') {\n      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);\n      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\nLAB_00083548:\n      iVar5 = moveToLeftmost(pCur);\n      return iVar5;\n    }\n    do {\n      if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }\n      moveToParent(pCur);\n    } while (pCur->pPage->nCell <= pCur->ix);\n    if (pCur->pPage->intKey != '\0') {\n      iVar5 = sqlite3BtreeNext(pCur,0);\n      return iVar5;\n    }\n  }" { (if_statement "if (pMVar1->leaf == '\0') {\n      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);\n      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\nLAB_00083548:\n      iVar5 = moveToLeftmost(pCur);\n      return iVar5;\n    }" if (parenthesized_expression "(pMVar1->leaf == '\0')" ( (binary_expression "pMVar1->leaf == '\0'" (field_expression "pMVar1->leaf" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);\n      iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);\n      if (iVar5 != 0) {\n        return iVar5;\n      }\nLAB_00083548:\n      iVar5 = moveToLeftmost(pCur);\n      return iVar5;\n    }" { (expression_statement "uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8);" (assignment_expression "uVar2 = *(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8)" identifier = (pointer_expression "*(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8)" * (cast_expression "(uint *)(pMVar1->aData + pMVar1->hdrOffset + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pMVar1->aData + pMVar1->hdrOffset + 8)" ( (binary_expression "pMVar1->aData + pMVar1->hdrOffset + 8" (binary_expression "pMVar1->aData + pMVar1->hdrOffset" (field_expression "pMVar1->aData" identifier -> field_identifier) + (field_expression "pMVar1->hdrOffset" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18);" (assignment_expression "iVar5 = moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18)" identifier = (call_expression "moveToChild(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18)" identifier (argument_list "(pCur,uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18)" ( identifier , (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                               uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (iVar5 != 0) {\n        return iVar5;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        return iVar5;\n      }" { (return_statement "return iVar5;" return identifier ;) })) (labeled_statement "LAB_00083548:\n      iVar5 = moveToLeftmost(pCur);" statement_identifier : (expression_statement "iVar5 = moveToLeftmost(pCur);" (assignment_expression "iVar5 = moveToLeftmost(pCur)" identifier = (call_expression "moveToLeftmost(pCur)" identifier (argument_list "(pCur)" ( identifier )))) ;)) (return_statement "return iVar5;" return identifier ;) })) (do_statement "do {\n      if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }\n      moveToParent(pCur);\n    } while (pCur->pPage->nCell <= pCur->ix);" do (compound_statement "{\n      if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }\n      moveToParent(pCur);\n    }" { (if_statement "if (pCur->iPage == '\0') {\n        pCur->eState = '\x01';\n        return 0x65;\n      }" if (parenthesized_expression "(pCur->iPage == '\0')" ( (binary_expression "pCur->iPage == '\0'" (field_expression "pCur->iPage" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pCur->eState = '\x01';\n        return 0x65;\n      }" { (expression_statement "pCur->eState = '\x01';" (assignment_expression "pCur->eState = '\x01'" (field_expression "pCur->eState" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (return_statement "return 0x65;" return number_literal ;) })) (expression_statement "moveToParent(pCur);" (call_expression "moveToParent(pCur)" identifier (argument_list "(pCur)" ( identifier ))) ;) }) while (parenthesized_expression "(pCur->pPage->nCell <= pCur->ix)" ( (binary_expression "pCur->pPage->nCell <= pCur->ix" (field_expression "pCur->pPage->nCell" (field_expression "pCur->pPage" identifier -> field_identifier) -> field_identifier) <= (field_expression "pCur->ix" identifier -> field_identifier)) )) ;) (if_statement "if (pCur->pPage->intKey != '\0') {\n      iVar5 = sqlite3BtreeNext(pCur,0);\n      return iVar5;\n    }" if (parenthesized_expression "(pCur->pPage->intKey != '\0')" ( (binary_expression "pCur->pPage->intKey != '\0'" (field_expression "pCur->pPage->intKey" (field_expression "pCur->pPage" identifier -> field_identifier) -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar5 = sqlite3BtreeNext(pCur,0);\n      return iVar5;\n    }" { (expression_statement "iVar5 = sqlite3BtreeNext(pCur,0);" (assignment_expression "iVar5 = sqlite3BtreeNext(pCur,0)" identifier = (call_expression "sqlite3BtreeNext(pCur,0)" identifier (argument_list "(pCur,0)" ( identifier , number_literal )))) ;) (return_statement "return iVar5;" return identifier ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int __regparm3 FUN_00083470(byte *param_1)\n\n{\n  short sVar1;\n  char *pcVar2;\n  byte bVar3;\n  int iVar4;\n  \n  bVar3 = *param_1;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);\n  pcVar2 = *(char **)(param_1 + 0x6c);\n  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;\n  if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }\n  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_00083470(byte *param_1)\n\n{\n  short sVar1;\n  char *pcVar2;\n  byte bVar3;\n  int iVar4;\n  \n  bVar3 = *param_1;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);\n  pcVar2 = *(char **)(param_1 + 0x6c);\n  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;\n  if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }\n  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00083470(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  short sVar1;\n  char *pcVar2;\n  byte bVar3;\n  int iVar4;\n  \n  bVar3 = *param_1;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);\n  pcVar2 = *(char **)(param_1 + 0x6c);\n  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;\n  if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }\n  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }\n  return 0;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "bVar3 = *param_1;" (assignment_expression "bVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }" { (if_statement "if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }" if (parenthesized_expression "(2 < bVar3)" ( (binary_expression "2 < bVar3" number_literal < identifier) )) (compound_statement "{\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }" { (if_statement "if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }" if (parenthesized_expression "(bVar3 == 4)" ( (binary_expression "bVar3 == 4" identifier == number_literal) )) (compound_statement "{\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }" { (if_statement "if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" ( (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          return *(int *)(param_1 + 4);\n        }" { (return_statement "return *(int *)(param_1 + 4);" return (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) })) (goto_statement "goto LAB_00083491;" goto statement_identifier ;) })) (expression_statement "iVar4 = FUN_00082e40();" (assignment_expression "iVar4 = FUN_00082e40()" identifier = (call_expression "FUN_00082e40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n        return iVar4;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return iVar4;\n      }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "bVar3 = *param_1;" (assignment_expression "bVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (bVar3 == 1) {\n      return 0x65;\n    }" if (parenthesized_expression "(bVar3 == 1)" ( (binary_expression "bVar3 == 1" identifier == number_literal) )) (compound_statement "{\n      return 0x65;\n    }" { (return_statement "return 0x65;" return number_literal ;) })) (if_statement "if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }" if (parenthesized_expression "((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4)))" ( (binary_expression "(bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))" (parenthesized_expression "(bVar3 == 2)" ( (binary_expression "bVar3 == 2" identifier == number_literal) )) && (parenthesized_expression "(*param_1 = 0, 0 < *(int *)(param_1 + 4))" ( (comma_expression "*param_1 = 0, 0 < *(int *)(param_1 + 4)" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) , (binary_expression "0 < *(int *)(param_1 + 4)" number_literal < (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);" statement_identifier : (expression_statement "sVar1 = *(short *)(param_1 + 0x3e);" (assignment_expression "sVar1 = *(short *)(param_1 + 0x3e)" identifier = (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) ))))) ;)) (expression_statement "pcVar2 = *(char **)(param_1 + 0x6c);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x6c)" identifier = (pointer_expression "*(char **)(param_1 + 0x6c)" * (cast_expression "(char **)(param_1 + 0x6c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*(ushort *)(param_1 + 0x3e) = sVar1 + 1U;" (assignment_expression "*(ushort *)(param_1 + 0x3e) = sVar1 + 1U" (pointer_expression "*(ushort *)(param_1 + 0x3e)" * (cast_expression "(ushort *)(param_1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) )))) = (binary_expression "sVar1 + 1U" identifier + number_literal)) ;) (if_statement "if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }" if (parenthesized_expression "(*pcVar2 == '\0')" ( (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }" { (expression_statement "iVar4 = FUN_00051360();" (assignment_expression "iVar4 = FUN_00051360()" identifier = (call_expression "FUN_00051360()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar4;" return identifier ;) })) (if_statement "if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" if (parenthesized_expression "((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16))" ( (binary_expression "(ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)" (call_expression "(ushort)(sVar1 + 1U)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(sVar1 + 1U)" ( (binary_expression "sVar1 + 1U" identifier + number_literal) ))) < (pointer_expression "*(ushort *)(pcVar2 + 0x16)" * (cast_expression "(ushort *)(pcVar2 + 0x16)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar2 + 0x16)" ( (binary_expression "pcVar2 + 0x16" identifier + number_literal) ))))) )) (compound_statement "{\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }" { (if_statement "if (pcVar2[8] == '\0') goto LAB_00083548;" if (parenthesized_expression "(pcVar2[8] == '\0')" ( (binary_expression "pcVar2[8] == '\0'" (subscript_expression "pcVar2[8]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00083548;" goto statement_identifier ;)) }) (else_clause "else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" else (compound_statement "{\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" { (if_statement "if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }" if (parenthesized_expression "(pcVar2[8] == '\0')" ( (binary_expression "pcVar2[8] == '\0'" (subscript_expression "pcVar2[8]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }" { (expression_statement "iVar4 = FUN_00051d70();" (assignment_expression "iVar4 = FUN_00051d70()" identifier = (call_expression "FUN_00051d70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n        return iVar4;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return iVar4;\n      }" { (return_statement "return iVar4;" return identifier ;) })) (labeled_statement "LAB_00083548:\n      iVar4 = FUN_00051e30();" statement_identifier : (expression_statement "iVar4 = FUN_00051e30();" (assignment_expression "iVar4 = FUN_00051e30()" identifier = (call_expression "FUN_00051e30()" identifier (argument_list "()" ( )))) ;)) (return_statement "return iVar4;" return identifier ;) })) (do_statement "do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));" do (compound_statement "{\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    }" { (if_statement "if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }" if (parenthesized_expression "(param_1[0x3c] == 0)" ( (binary_expression "param_1[0x3c] == 0" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        *param_1 = 1;\n        return 0x65;\n      }" { (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return 0x65;" return number_literal ;) })) (expression_statement "FUN_0001b760();" (call_expression "FUN_0001b760()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e))" ( (binary_expression "*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e)" (pointer_expression "*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16)" * (cast_expression "(ushort *)(*(int *)(param_1 + 0x6c) + 0x16)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 0x16)" ( (binary_expression "*(int *)(param_1 + 0x6c) + 0x16" (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) )))) <= (pointer_expression "*(ushort *)(param_1 + 0x3e)" * (cast_expression "(ushort *)(param_1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3e)" ( (binary_expression "param_1 + 0x3e" identifier + number_literal) ))))) )) ;) (if_statement "if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x6c) + 2)" * (cast_expression "(char *)(*(int *)(param_1 + 0x6c) + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 2)" ( (binary_expression "*(int *)(param_1 + 0x6c) + 2" (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      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }" { (expression_statement "iVar4 = FUN_000835b0(param_1,0);" (assignment_expression "iVar4 = FUN_000835b0(param_1,0)" identifier = (call_expression "FUN_000835b0(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (return_statement "return iVar4;" return identifier ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * IDENT) = LIT) , (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (return_statement return LIT ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (return_statement return IDENT ;) })) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (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) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (if_statement if (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 IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (return_statement return IDENT ;) })) }))) (return_statement return LIT ;) })))
(function_definition "int __regparm3 FUN_00083470(byte *param_1)\n\n{\n  short sVar1;\n  char *pcVar2;\n  byte bVar3;\n  int iVar4;\n  \n  bVar3 = *param_1;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);\n  pcVar2 = *(char **)(param_1 + 0x6c);\n  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;\n  if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }\n  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }\n  return 0;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00083470(byte *param_1)" (identifier "FUN_00083470") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  short sVar1;\n  char *pcVar2;\n  byte bVar3;\n  int iVar4;\n  \n  bVar3 = *param_1;\n  if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }\nLAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);\n  pcVar2 = *(char **)(param_1 + 0x6c);\n  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;\n  if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }\n  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "short sVar1;" (sized_type_specifier "short" (short "short")) (identifier "sVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (expression_statement "bVar3 = *param_1;" (assignment_expression "bVar3 = *param_1" (identifier "bVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (bVar3 != 0) {\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(bVar3 != 0)" (( "(") (binary_expression "bVar3 != 0" (identifier "bVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }\n    if (bVar3 == 1) {\n      return 0x65;\n    }\n    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (2 < bVar3) {\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }" (if "if") (parenthesized_expression "(2 < bVar3)" (( "(") (binary_expression "2 < bVar3" (number_literal "2") (< "<") (identifier "bVar3")) () ")")) (compound_statement "{\n      if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }\n      iVar4 = FUN_00082e40();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\n      bVar3 = *param_1;\n    }" ({ "{") (if_statement "if (bVar3 == 4) {\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }" (if "if") (parenthesized_expression "(bVar3 == 4)" (( "(") (binary_expression "bVar3 == 4" (identifier "bVar3") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n        if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }\n        goto LAB_00083491;\n      }" ({ "{") (if_statement "if (*(int *)(param_1 + 4) != 0) {\n          return *(int *)(param_1 + 4);\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return *(int *)(param_1 + 4);\n        }" ({ "{") (return_statement "return *(int *)(param_1 + 4);" (return "return") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (; ";")) (} "}"))) (goto_statement "goto LAB_00083491;" (goto "goto") (statement_identifier "LAB_00083491") (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_00082e40();" (assignment_expression "iVar4 = FUN_00082e40()" (identifier "iVar4") (= "=") (call_expression "FUN_00082e40()" (identifier "FUN_00082e40") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n        return iVar4;\n      }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return iVar4;\n      }" ({ "{") (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (expression_statement "bVar3 = *param_1;" (assignment_expression "bVar3 = *param_1" (identifier "bVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (if_statement "if (bVar3 == 1) {\n      return 0x65;\n    }" (if "if") (parenthesized_expression "(bVar3 == 1)" (( "(") (binary_expression "bVar3 == 1" (identifier "bVar3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      return 0x65;\n    }" ({ "{") (return_statement "return 0x65;" (return "return") (number_literal "0x65") (; ";")) (} "}"))) (if_statement "if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4)))" (( "(") (binary_expression "(bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))" (parenthesized_expression "(bVar3 == 2)" (( "(") (binary_expression "bVar3 == 2" (identifier "bVar3") (== "==") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(*param_1 = 0, 0 < *(int *)(param_1 + 4))" (( "(") (comma_expression "*param_1 = 0, 0 < *(int *)(param_1 + 4)" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (, ",") (binary_expression "0 < *(int *)(param_1 + 4)" (number_literal "0") (< "<") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00083491:\n  sVar1 = *(short *)(param_1 + 0x3e);" (statement_identifier "LAB_00083491") (: ":") (expression_statement "sVar1 = *(short *)(param_1 + 0x3e);" (assignment_expression "sVar1 = *(short *)(param_1 + 0x3e)" (identifier "sVar1") (= "=") (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")) () ")"))))) (; ";"))) (expression_statement "pcVar2 = *(char **)(param_1 + 0x6c);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x6c)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0x6c)" (* "*") (cast_expression "(char **)(param_1 + 0x6c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "*(ushort *)(param_1 + 0x3e) = sVar1 + 1U;" (assignment_expression "*(ushort *)(param_1 + 0x3e) = sVar1 + 1U" (pointer_expression "*(ushort *)(param_1 + 0x3e)" (* "*") (cast_expression "(ushort *)(param_1 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3e)" (( "(") (binary_expression "param_1 + 0x3e" (identifier "param_1") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (binary_expression "sVar1 + 1U" (identifier "sVar1") (+ "+") (number_literal "1U"))) (; ";")) (if_statement "if (*pcVar2 == '\0') {\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }" (if "if") (parenthesized_expression "(*pcVar2 == '\0')" (( "(") (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar4 = FUN_00051360();\n    return iVar4;\n  }" ({ "{") (expression_statement "iVar4 = FUN_00051360();" (assignment_expression "iVar4 = FUN_00051360()" (identifier "iVar4") (= "=") (call_expression "FUN_00051360()" (identifier "FUN_00051360") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (if_statement "if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }\n  else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" (if "if") (parenthesized_expression "((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16))" (( "(") (binary_expression "(ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)" (call_expression "(ushort)(sVar1 + 1U)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(sVar1 + 1U)" (( "(") (binary_expression "sVar1 + 1U" (identifier "sVar1") (+ "+") (number_literal "1U")) () ")"))) (< "<") (pointer_expression "*(ushort *)(pcVar2 + 0x16)" (* "*") (cast_expression "(ushort *)(pcVar2 + 0x16)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar2 + 0x16)" (( "(") (binary_expression "pcVar2 + 0x16" (identifier "pcVar2") (+ "+") (number_literal "0x16")) () ")"))))) () ")")) (compound_statement "{\n    if (pcVar2[8] == '\0') goto LAB_00083548;\n  }" ({ "{") (if_statement "if (pcVar2[8] == '\0') goto LAB_00083548;" (if "if") (parenthesized_expression "(pcVar2[8] == '\0')" (( "(") (binary_expression "pcVar2[8] == '\0'" (subscript_expression "pcVar2[8]" (identifier "pcVar2") ([ "[") (number_literal "8") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00083548;" (goto "goto") (statement_identifier "LAB_00083548") (; ";"))) (} "}")) (else_clause "else {\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" (else "else") (compound_statement "{\n    if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }\n    do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));\n    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }\n  }" ({ "{") (if_statement "if (pcVar2[8] == '\0') {\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }" (if "if") (parenthesized_expression "(pcVar2[8] == '\0')" (( "(") (binary_expression "pcVar2[8] == '\0'" (subscript_expression "pcVar2[8]" (identifier "pcVar2") ([ "[") (number_literal "8") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar4 = FUN_00051d70();\n      if (iVar4 != 0) {\n        return iVar4;\n      }\nLAB_00083548:\n      iVar4 = FUN_00051e30();\n      return iVar4;\n    }" ({ "{") (expression_statement "iVar4 = FUN_00051d70();" (assignment_expression "iVar4 = FUN_00051d70()" (identifier "iVar4") (= "=") (call_expression "FUN_00051d70()" (identifier "FUN_00051d70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n        return iVar4;\n      }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return iVar4;\n      }" ({ "{") (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (labeled_statement "LAB_00083548:\n      iVar4 = FUN_00051e30();" (statement_identifier "LAB_00083548") (: ":") (expression_statement "iVar4 = FUN_00051e30();" (assignment_expression "iVar4 = FUN_00051e30()" (identifier "iVar4") (= "=") (call_expression "FUN_00051e30()" (identifier "FUN_00051e30") (argument_list "()" (( "(") () ")")))) (; ";"))) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (do_statement "do {\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));" (do "do") (compound_statement "{\n      if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }\n      FUN_0001b760();\n    }" ({ "{") (if_statement "if (param_1[0x3c] == 0) {\n        *param_1 = 1;\n        return 0x65;\n      }" (if "if") (parenthesized_expression "(param_1[0x3c] == 0)" (( "(") (binary_expression "param_1[0x3c] == 0" (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *param_1 = 1;\n        return 0x65;\n      }" ({ "{") (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "1")) (; ";")) (return_statement "return 0x65;" (return "return") (number_literal "0x65") (; ";")) (} "}"))) (expression_statement "FUN_0001b760();" (call_expression "FUN_0001b760()" (identifier "FUN_0001b760") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e))" (( "(") (binary_expression "*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e)" (pointer_expression "*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16)" (* "*") (cast_expression "(ushort *)(*(int *)(param_1 + 0x6c) + 0x16)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 0x16)" (( "(") (binary_expression "*(int *)(param_1 + 0x6c) + 0x16" (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 "0x16")) () ")")))) (<= "<=") (pointer_expression "*(ushort *)(param_1 + 0x3e)" (* "*") (cast_expression "(ushort *)(param_1 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3e)" (( "(") (binary_expression "param_1 + 0x3e" (identifier "param_1") (+ "+") (number_literal "0x3e")) () ")"))))) () ")")) (; ";")) (if_statement "if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x6c) + 2)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 0x6c) + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x6c) + 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x6c) + 2" (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 "2")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar4 = FUN_000835b0(param_1,0);\n      return iVar4;\n    }" ({ "{") (expression_statement "iVar4 = FUN_000835b0(param_1,0);" (assignment_expression "iVar4 = FUN_000835b0(param_1,0)" (identifier "iVar4") (= "=") (call_expression "FUN_000835b0(param_1,0)" (identifier "FUN_000835b0") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int __regparm3 function_1(type_1 *pCur)

{
  type_2 *pMVar1;
  type_3 var_7;
  type_4 var_1;
  type_5 var_5;
  int var_3;
  
  var_1 = pCur->eState;
  if (var_1 != 0) {
    if (2 < var_1) {
      if (var_1 == 4) {
        if (pCur->skipNext != 0) {
          return pCur->skipNext;
        }
        goto LAB_00083491;
      }
      var_3 = var_2(pCur);
      if (var_3 != 0) {
        return var_3;
      }
      var_1 = pCur->eState;
    }
    if (var_1 == 1) {
      return 0x65;
    }
    if ((var_1 == 2) && (pCur->eState = '\0', 0 < pCur->skipNext)) {
      return 0;
    }
  }
LAB_00083491:
  pMVar1 = pCur->pPage;
  var_5 = pCur->ix + 1;
  pCur->ix = var_5;
  if (pMVar1->isInit == '\0') {
    var_3 = var_4(0x10c6d);
    return var_3;
  }
  if (var_5 < pMVar1->nCell) {
    if (pMVar1->leaf == '\0') goto LAB_00083548;
  }
  else {
    if (pMVar1->leaf == '\0') {
      var_7 = *(type_3 *)(pMVar1->aData + pMVar1->hdrOffset + 8);
      var_3 = var_6(pCur,var_7 >> 0x18 | (var_7 & 0xff0000) >> 8 | (var_7 & 0xff00) << 8 |
                               var_7 << 0x18);
      if (var_3 != 0) {
        return var_3;
      }
LAB_00083548:
      var_3 = var_8(pCur);
      return var_3;
    }
    do {
      if (pCur->iPage == '\0') {
        pCur->eState = '\x01';
        return 0x65;
      }
      var_9(pCur);
    } while (pCur->pPage->nCell <= pCur->ix);
    if (pCur->pPage->intKey != '\0') {
      var_3 = var_10(pCur,0);
      return var_3;
    }
  }
  return 0;
}


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

int __regparm3 MASKED(byte *param_1)

{
  short sVar1;
  char *pcVar2;
  byte bVar3;
  int iVar4;
  
  bVar3 = *param_1;
  if (bVar3 != 0) {
    if (2 < bVar3) {
      if (bVar3 == 4) {
        if (*(int *)(param_1 + 4) != 0) {
          return *(int *)(param_1 + 4);
        }
        goto LAB_00083491;
      }
      iVar4 = FUN_00082e40();
      if (iVar4 != 0) {
        return iVar4;
      }
      bVar3 = *param_1;
    }
    if (bVar3 == 1) {
      return 0x65;
    }
    if ((bVar3 == 2) && (*param_1 = 0, 0 < *(int *)(param_1 + 4))) {
      return 0;
    }
  }
LAB_00083491:
  sVar1 = *(short *)(param_1 + 0x3e);
  pcVar2 = *(char **)(param_1 + 0x6c);
  *(ushort *)(param_1 + 0x3e) = sVar1 + 1U;
  if (*pcVar2 == '\0') {
    iVar4 = FUN_00051360();
    return iVar4;
  }
  if ((ushort)(sVar1 + 1U) < *(ushort *)(pcVar2 + 0x16)) {
    if (pcVar2[8] == '\0') goto LAB_00083548;
  }
  else {
    if (pcVar2[8] == '\0') {
      iVar4 = FUN_00051d70();
      if (iVar4 != 0) {
        return iVar4;
      }
LAB_00083548:
      iVar4 = FUN_00051e30();
      return iVar4;
    }
    do {
      if (param_1[0x3c] == 0) {
        *param_1 = 1;
        return 0x65;
      }
      FUN_0001b760();
    } while (*(ushort *)(*(int *)(param_1 + 0x6c) + 0x16) <= *(ushort *)(param_1 + 0x3e));
    if (*(char *)(*(int *)(param_1 + 0x6c) + 2) != '\0') {
      iVar4 = FUN_000835b0(param_1,0);
      return iVar4;
    }
  }
  return 0;
}

