
int __regparm3 clearCell(MemPage *pPage,uchar *pCell,CellInfo *pInfo)

{
  BtShared *pBt;
  uint uVar1;
  int iVar2;
  uint ovfl;
  int in_GS_OFFSET;
  Pgno iNext;
  MemPage *pOvfl;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  (*pPage->xParseCell)(pPage,pCell,pInfo);
  if ((uint)pInfo->nLocal != pInfo->nPayload) {
    if (pPage->aDataEnd < pCell + pInfo->nSize) {
      iVar2 = sqlite3CorruptError(0x10ef0);
      goto LAB_00080870;
    }
    pBt = pPage->pBt;
    uVar1 = *(uint *)(pCell + (pInfo->nSize - 4));
    ovfl = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
    uVar1 = pBt->usableSize - 4;
    uVar1 = (((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1;
    if (uVar1 != 0) {
      if ((1 < ovfl) && (ovfl <= pBt->nPage)) {
        do {
          pOvfl = (MemPage *)0x0;
          iNext = 0;
          uVar1 = uVar1 - 1;
          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))
          goto LAB_00080870;
          if ((pOvfl == (MemPage *)0x0) &&
             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {
            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);
          }
          else if (pOvfl->pDbPage->nRef == 1) {
            iVar2 = freePage2(pBt,pOvfl,ovfl);
          }
          else {
            iVar2 = sqlite3CorruptError(0x10f15);
          }
          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {
            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);
          }
          if (iVar2 != 0) goto LAB_00080870;
          if (uVar1 == 0) goto LAB_000808b8;
        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));
      }
      pOvfl = (MemPage *)0x0;
      iNext = 0;
      iVar2 = sqlite3CorruptError(0x10f01);
      goto LAB_00080870;
    }
  }
LAB_000808b8:
  iVar2 = 0;
LAB_00080870:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar2;
}



int __regparm3 FUN_00080730(int param_1,int param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int in_GS_OFFSET;
  uint local_28;
  int local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);
  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {
    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {
      iVar3 = FUN_00052b70();
      goto LAB_00080870;
    }
    iVar1 = *(int *)(param_1 + 0x34);
    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));
    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    uVar2 = *(int *)(iVar1 + 0x24) - 4;
    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;
    if (uVar2 != 0) {
      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {
        do {
          local_24 = 0;
          local_28 = 0;
          uVar2 = uVar2 - 1;
          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;
          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {
            iVar3 = FUN_000803e0();
          }
          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {
            iVar3 = FUN_000803e0();
          }
          else {
            iVar3 = FUN_00052b70();
          }
          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {
            FUN_0001c9b0();
          }
          if (iVar3 != 0) goto LAB_00080870;
          if (uVar2 == 0) goto LAB_000808b8;
        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));
      }
      local_24 = 0;
      local_28 = 0;
      iVar3 = FUN_00052b70();
      goto LAB_00080870;
    }
  }
LAB_000808b8:
  iVar3 = 0;
LAB_00080870:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return iVar3;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
PUSH EBX
MOV EBX,ECX
SUB ESP,0x30
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x20],EAX
XOR EAX,EAX
PUSH ECX
PUSH EDX
MOV dword ptr [ESP + 0x14],EDX
PUSH EDI
CALL dword ptr [EDI + 0x50]
MOVZX EBP,word ptr [EBX + 0x10]
MOV ESI,dword ptr [EBX + 0xc]
ADD ESP,0x10
CMP EBP,ESI
JZ 0x000808b8
MOVZX EAX,word ptr [EBX + 0x12]
MOV EDX,dword ptr [ESP + 0x8]
LEA ECX,[EDX + EAX*0x1]
CMP dword ptr [EDI + 0x3c],ECX
JC 0x000808d0
MOV EDI,dword ptr [EDI + 0x34]
MOV EBX,dword ptr [EDX + EAX*0x1 + -0x4]
XOR EDX,EDX
MOV EAX,dword ptr [EDI + 0x24]
BSWAP EBX
LEA ECX,[EAX + -0x4]
LEA EAX,[ESI + -0x1]
SUB EAX,EBP
ADD EAX,ECX
DIV ECX
LEA ESI,[EAX + -0x1]
TEST EAX,EAX
JZ 0x000808b8
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x18],0x0
CMP EBX,0x1
JBE 0x000808c0
CMP EBX,dword ptr [EDI + 0x2c]
JA 0x000808c0
LEA EAX,[ESP + 0x18]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[ESP + 0x14]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x00080825
MOV EAX,0x10f15
CALL 0x00052b70
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JZ 0x000807f0
MOV EAX,dword ptr [EAX + 0x48]
TEST EAX,EAX
JZ 0x000807f0
CALL 0x0001c9b0
TEST EBP,EBP
JNZ 0x00080870
MOV EBX,dword ptr [ESP + 0x14]
TEST ESI,ESI
JZ 0x000808b8
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x18],0x0
CMP EBX,0x1
JBE 0x000808c0
SUB ESI,0x1
CMP EBX,dword ptr [EDI + 0x2c]
JA 0x000808c0
TEST ESI,ESI
JNZ 0x00080850
MOV EDX,dword ptr [ESP + 0x18]
TEST EDX,EDX
JZ 0x00080890
MOV EAX,dword ptr [EDX + 0x48]
CMP word ptr [EAX + 0x1e],0x1
JNZ 0x000807d0
MOV ECX,EBX
MOV EAX,EDI
CALL 0x000803e0
MOV EBP,EAX
JMP 0x000807dc
SUB ESP,0xc
MOV EDX,EBX
MOV EAX,EDI
PUSH dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x18]
CALL 0x000531b0
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00080829
LEA ESI,[ESI]
MOV ECX,dword ptr [ESP + 0x1c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,EBP
JNZ 0x000808de
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,EBX
MOV EAX,EDI
CALL 0x0002c100
MOV EDX,EAX
MOV dword ptr [ESP + 0x18],EAX
TEST EAX,EAX
JNZ 0x00080831
MOV ECX,EBX
MOV EAX,EDI
CALL 0x000803e0
MOV EBP,EAX
JMP 0x000807dc
XOR EBP,EBP
JMP 0x00080870
MOV EAX,0x10f01
CALL 0x00052b70
MOV EBP,EAX
JMP 0x00080870
MOV EAX,0x10ef0
CALL 0x00052b70
MOV EBP,EAX
JMP 0x00080870
CALL 0x000f6410
(translation_unit "int __regparm3 FUN_00080730(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int in_GS_OFFSET;\n  uint local_28;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);\n  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar3 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return iVar3;\n}\n\n" (function_definition "int __regparm3 FUN_00080730(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int in_GS_OFFSET;\n  uint local_28;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);\n  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar3 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return iVar3;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00080730(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int in_GS_OFFSET;\n  uint local_28;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);\n  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar3 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return iVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(param_1 + 0x50))(param_1,param_2,param_3);" (call_expression "(**(code **)(param_1 + 0x50))(param_1,param_2,param_3)" (parenthesized_expression "(**(code **)(param_1 + 0x50))" ( (pointer_expression "**(code **)(param_1 + 0x50)" * (pointer_expression "*(code **)(param_1 + 0x50)" * (cast_expression "(code **)(param_1 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) )) (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }" if (parenthesized_expression "((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc))" ( (binary_expression "(uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)" (binary_expression "(uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) != (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }" { (if_statement "if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12))" ( (binary_expression "*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)" (pointer_expression "*(uint *)(param_1 + 0x3c)" * (cast_expression "(uint *)(param_1 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) < (binary_expression "param_2 + (uint)*(ushort *)(param_3 + 0x12)" identifier + (binary_expression "(uint)*(ushort *)(param_3 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x12)" ( (binary_expression "param_3 + 0x12" identifier + number_literal) )))))) )) (compound_statement "{\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" { (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" identifier = (call_expression "FUN_00052b70()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00080870;" goto statement_identifier ;) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x34);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x34)" identifier = (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));" (assignment_expression "uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" identifier = (pointer_expression "*(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" * (cast_expression "(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" ( (binary_expression "param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12)" (binary_expression "param_2 + -4" identifier + number_literal) + (binary_expression "(uint)*(ushort *)(param_3 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x12)" ( (binary_expression "param_3 + 0x12" identifier + number_literal) ))))) ))))) ;) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | 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))) ;) (expression_statement "uVar2 = *(int *)(iVar1 + 0x24) - 4;" (assignment_expression "uVar2 = *(int *)(iVar1 + 0x24) - 4" identifier = (binary_expression "*(int *)(iVar1 + 0x24) - 4" (pointer_expression "*(int *)(iVar1 + 0x24)" * (cast_expression "(int *)(iVar1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x24)" ( (binary_expression "iVar1 + 0x24" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;" (assignment_expression "uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2" identifier = (binary_expression "(((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2" (parenthesized_expression "(((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2)" ( (binary_expression "((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2" (parenthesized_expression "((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10))" ( (binary_expression "(*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(*(uint *)(param_3 + 0xc) - 1)" ( (binary_expression "*(uint *)(param_3 + 0xc) - 1" (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) - number_literal) )) - (binary_expression "(uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) ))))) )) + identifier) )) / identifier)) ;) (if_statement "if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" { (if_statement "if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }" if (parenthesized_expression "((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c)))" ( (binary_expression "(1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))" (parenthesized_expression "(1 < uVar4)" ( (binary_expression "1 < uVar4" number_literal < identifier) )) && (parenthesized_expression "(uVar4 <= *(uint *)(iVar1 + 0x2c))" ( (binary_expression "uVar4 <= *(uint *)(iVar1 + 0x2c)" identifier <= (pointer_expression "*(uint *)(iVar1 + 0x2c)" * (cast_expression "(uint *)(iVar1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2c)" ( (binary_expression "iVar1 + 0x2c" identifier + number_literal) ))))) ))) )) (compound_statement "{\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }" { (do_statement "do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));" do (compound_statement "{\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;" if (parenthesized_expression "((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0))" ( (binary_expression "(uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)" (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 = FUN_000531b0(&local_28), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_000531b0(&local_28), iVar3 != 0" (assignment_expression "iVar3 = FUN_000531b0(&local_28)" identifier = (call_expression "FUN_000531b0(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00080870;" goto statement_identifier ;)) (if_statement "if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" if (parenthesized_expression "((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0))" ( (binary_expression "(local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)" (parenthesized_expression "(local_24 == 0)" ( (binary_expression "local_24 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_24 = FUN_0002c100(), local_24 == 0)" ( (comma_expression "local_24 = FUN_0002c100(), local_24 == 0" (assignment_expression "local_24 = FUN_0002c100()" identifier = (call_expression "FUN_0002c100()" identifier (argument_list "()" ( )))) , (binary_expression "local_24 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n            iVar3 = FUN_000803e0();\n          }" { (expression_statement "iVar3 = FUN_000803e0();" (assignment_expression "iVar3 = FUN_000803e0()" identifier = (call_expression "FUN_000803e0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" else (if_statement "if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" if (parenthesized_expression "(*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1)" ( (binary_expression "*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1" (pointer_expression "*(short *)(*(int *)(local_24 + 0x48) + 0x1e)" * (cast_expression "(short *)(*(int *)(local_24 + 0x48) + 0x1e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_24 + 0x48) + 0x1e)" ( (binary_expression "*(int *)(local_24 + 0x48) + 0x1e" (pointer_expression "*(int *)(local_24 + 0x48)" * (cast_expression "(int *)(local_24 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + 0x48)" ( (binary_expression "local_24 + 0x48" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n            iVar3 = FUN_000803e0();\n          }" { (expression_statement "iVar3 = FUN_000803e0();" (assignment_expression "iVar3 = FUN_000803e0()" identifier = (call_expression "FUN_000803e0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n            iVar3 = FUN_00052b70();\n          }" else (compound_statement "{\n            iVar3 = FUN_00052b70();\n          }" { (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" identifier = (call_expression "FUN_00052b70()" identifier (argument_list "()" ( )))) ;) }))))) (if_statement "if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }" if (parenthesized_expression "((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0))" ( (binary_expression "(local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)" (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(local_24 + 0x48) != 0)" ( (binary_expression "*(int *)(local_24 + 0x48) != 0" (pointer_expression "*(int *)(local_24 + 0x48)" * (cast_expression "(int *)(local_24 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + 0x48)" ( (binary_expression "local_24 + 0x48" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            FUN_0001c9b0();\n          }" { (expression_statement "FUN_0001c9b0();" (call_expression "FUN_0001c9b0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar3 != 0) goto LAB_00080870;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00080870;" goto statement_identifier ;)) (if_statement "if (uVar2 == 0) goto LAB_000808b8;" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000808b8;" goto statement_identifier ;)) }) while (parenthesized_expression "((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)))" ( (binary_expression "(1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c))" (parenthesized_expression "(1 < local_28)" ( (binary_expression "1 < local_28" number_literal < identifier) )) && (parenthesized_expression "(local_28 <= *(uint *)(iVar1 + 0x2c))" ( (binary_expression "local_28 <= *(uint *)(iVar1 + 0x2c)" identifier <= (pointer_expression "*(uint *)(iVar1 + 0x2c)" * (cast_expression "(uint *)(iVar1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2c)" ( (binary_expression "iVar1 + 0x2c" identifier + number_literal) ))))) ))) )) ;) })) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" identifier = (call_expression "FUN_00052b70()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00080870;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000808b8:\n  iVar3 = 0;" statement_identifier : (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" { comment (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "int __regparm3 clearCell(MemPage *pPage,uchar *pCell,CellInfo *pInfo)\n\n{\n  BtShared *pBt;\n  uint uVar1;\n  int iVar2;\n  uint ovfl;\n  int in_GS_OFFSET;\n  Pgno iNext;\n  MemPage *pOvfl;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (*pPage->xParseCell)(pPage,pCell,pInfo);\n  if ((uint)pInfo->nLocal != pInfo->nPayload) {\n    if (pPage->aDataEnd < pCell + pInfo->nSize) {\n      iVar2 = sqlite3CorruptError(0x10ef0);\n      goto LAB_00080870;\n    }\n    pBt = pPage->pBt;\n    uVar1 = *(uint *)(pCell + (pInfo->nSize - 4));\n    ovfl = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    uVar1 = pBt->usableSize - 4;\n    uVar1 = (((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1;\n    if (uVar1 != 0) {\n      if ((1 < ovfl) && (ovfl <= pBt->nPage)) {\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }\n      pOvfl = (MemPage *)0x0;\n      iNext = 0;\n      iVar2 = sqlite3CorruptError(0x10f01);\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar2 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar2;\n}\n\n" (function_definition "int __regparm3 clearCell(MemPage *pPage,uchar *pCell,CellInfo *pInfo)\n\n{\n  BtShared *pBt;\n  uint uVar1;\n  int iVar2;\n  uint ovfl;\n  int in_GS_OFFSET;\n  Pgno iNext;\n  MemPage *pOvfl;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (*pPage->xParseCell)(pPage,pCell,pInfo);\n  if ((uint)pInfo->nLocal != pInfo->nPayload) {\n    if (pPage->aDataEnd < pCell + pInfo->nSize) {\n      iVar2 = sqlite3CorruptError(0x10ef0);\n      goto LAB_00080870;\n    }\n    pBt = pPage->pBt;\n    uVar1 = *(uint *)(pCell + (pInfo->nSize - 4));\n    ovfl = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    uVar1 = pBt->usableSize - 4;\n    uVar1 = (((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1;\n    if (uVar1 != 0) {\n      if ((1 < ovfl) && (ovfl <= pBt->nPage)) {\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }\n      pOvfl = (MemPage *)0x0;\n      iNext = 0;\n      iVar2 = sqlite3CorruptError(0x10f01);\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar2 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar2;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "clearCell(MemPage *pPage,uchar *pCell,CellInfo *pInfo)" identifier (parameter_list "(MemPage *pPage,uchar *pCell,CellInfo *pInfo)" ( (parameter_declaration "MemPage *pPage" type_identifier (pointer_declarator "*pPage" * identifier)) , (parameter_declaration "uchar *pCell" type_identifier (pointer_declarator "*pCell" * identifier)) , (parameter_declaration "CellInfo *pInfo" type_identifier (pointer_declarator "*pInfo" * identifier)) ))) (compound_statement "{\n  BtShared *pBt;\n  uint uVar1;\n  int iVar2;\n  uint ovfl;\n  int in_GS_OFFSET;\n  Pgno iNext;\n  MemPage *pOvfl;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (*pPage->xParseCell)(pPage,pCell,pInfo);\n  if ((uint)pInfo->nLocal != pInfo->nPayload) {\n    if (pPage->aDataEnd < pCell + pInfo->nSize) {\n      iVar2 = sqlite3CorruptError(0x10ef0);\n      goto LAB_00080870;\n    }\n    pBt = pPage->pBt;\n    uVar1 = *(uint *)(pCell + (pInfo->nSize - 4));\n    ovfl = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    uVar1 = pBt->usableSize - 4;\n    uVar1 = (((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1;\n    if (uVar1 != 0) {\n      if ((1 < ovfl) && (ovfl <= pBt->nPage)) {\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }\n      pOvfl = (MemPage *)0x0;\n      iNext = 0;\n      iVar2 = sqlite3CorruptError(0x10f01);\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar2 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar2;\n}" { (declaration "BtShared *pBt;" type_identifier (pointer_declarator "*pBt" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint ovfl;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "Pgno iNext;" type_identifier identifier ;) (declaration "MemPage *pOvfl;" type_identifier (pointer_declarator "*pOvfl" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "(*pPage->xParseCell)(pPage,pCell,pInfo);" (call_expression "(*pPage->xParseCell)(pPage,pCell,pInfo)" (parenthesized_expression "(*pPage->xParseCell)" ( (pointer_expression "*pPage->xParseCell" * (field_expression "pPage->xParseCell" identifier -> field_identifier)) )) (argument_list "(pPage,pCell,pInfo)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((uint)pInfo->nLocal != pInfo->nPayload) {\n    if (pPage->aDataEnd < pCell + pInfo->nSize) {\n      iVar2 = sqlite3CorruptError(0x10ef0);\n      goto LAB_00080870;\n    }\n    pBt = pPage->pBt;\n    uVar1 = *(uint *)(pCell + (pInfo->nSize - 4));\n    ovfl = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    uVar1 = pBt->usableSize - 4;\n    uVar1 = (((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1;\n    if (uVar1 != 0) {\n      if ((1 < ovfl) && (ovfl <= pBt->nPage)) {\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }\n      pOvfl = (MemPage *)0x0;\n      iNext = 0;\n      iVar2 = sqlite3CorruptError(0x10f01);\n      goto LAB_00080870;\n    }\n  }" if (parenthesized_expression "((uint)pInfo->nLocal != pInfo->nPayload)" ( (binary_expression "(uint)pInfo->nLocal != pInfo->nPayload" (cast_expression "(uint)pInfo->nLocal" ( (type_descriptor "uint" type_identifier) ) (field_expression "pInfo->nLocal" identifier -> field_identifier)) != (field_expression "pInfo->nPayload" identifier -> field_identifier)) )) (compound_statement "{\n    if (pPage->aDataEnd < pCell + pInfo->nSize) {\n      iVar2 = sqlite3CorruptError(0x10ef0);\n      goto LAB_00080870;\n    }\n    pBt = pPage->pBt;\n    uVar1 = *(uint *)(pCell + (pInfo->nSize - 4));\n    ovfl = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n    uVar1 = pBt->usableSize - 4;\n    uVar1 = (((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1;\n    if (uVar1 != 0) {\n      if ((1 < ovfl) && (ovfl <= pBt->nPage)) {\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }\n      pOvfl = (MemPage *)0x0;\n      iNext = 0;\n      iVar2 = sqlite3CorruptError(0x10f01);\n      goto LAB_00080870;\n    }\n  }" { (if_statement "if (pPage->aDataEnd < pCell + pInfo->nSize) {\n      iVar2 = sqlite3CorruptError(0x10ef0);\n      goto LAB_00080870;\n    }" if (parenthesized_expression "(pPage->aDataEnd < pCell + pInfo->nSize)" ( (binary_expression "pPage->aDataEnd < pCell + pInfo->nSize" (field_expression "pPage->aDataEnd" identifier -> field_identifier) < (binary_expression "pCell + pInfo->nSize" identifier + (field_expression "pInfo->nSize" identifier -> field_identifier))) )) (compound_statement "{\n      iVar2 = sqlite3CorruptError(0x10ef0);\n      goto LAB_00080870;\n    }" { (expression_statement "iVar2 = sqlite3CorruptError(0x10ef0);" (assignment_expression "iVar2 = sqlite3CorruptError(0x10ef0)" identifier = (call_expression "sqlite3CorruptError(0x10ef0)" identifier (argument_list "(0x10ef0)" ( number_literal )))) ;) (goto_statement "goto LAB_00080870;" goto statement_identifier ;) })) (expression_statement "pBt = pPage->pBt;" (assignment_expression "pBt = pPage->pBt" identifier = (field_expression "pPage->pBt" identifier -> field_identifier)) ;) (expression_statement "uVar1 = *(uint *)(pCell + (pInfo->nSize - 4));" (assignment_expression "uVar1 = *(uint *)(pCell + (pInfo->nSize - 4))" identifier = (pointer_expression "*(uint *)(pCell + (pInfo->nSize - 4))" * (cast_expression "(uint *)(pCell + (pInfo->nSize - 4))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pCell + (pInfo->nSize - 4))" ( (binary_expression "pCell + (pInfo->nSize - 4)" identifier + (parenthesized_expression "(pInfo->nSize - 4)" ( (binary_expression "pInfo->nSize - 4" (field_expression "pInfo->nSize" identifier -> field_identifier) - number_literal) ))) ))))) ;) (expression_statement "ovfl = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "ovfl = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" identifier = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar1 = pBt->usableSize - 4;" (assignment_expression "uVar1 = pBt->usableSize - 4" identifier = (binary_expression "pBt->usableSize - 4" (field_expression "pBt->usableSize" identifier -> field_identifier) - number_literal)) ;) (expression_statement "uVar1 = (((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1;" (assignment_expression "uVar1 = (((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1" identifier = (binary_expression "(((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1) / uVar1" (parenthesized_expression "(((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1)" ( (binary_expression "((pInfo->nPayload - 1) - (uint)pInfo->nLocal) + uVar1" (parenthesized_expression "((pInfo->nPayload - 1) - (uint)pInfo->nLocal)" ( (binary_expression "(pInfo->nPayload - 1) - (uint)pInfo->nLocal" (parenthesized_expression "(pInfo->nPayload - 1)" ( (binary_expression "pInfo->nPayload - 1" (field_expression "pInfo->nPayload" identifier -> field_identifier) - number_literal) )) - (cast_expression "(uint)pInfo->nLocal" ( (type_descriptor "uint" type_identifier) ) (field_expression "pInfo->nLocal" identifier -> field_identifier))) )) + identifier) )) / identifier)) ;) (if_statement "if (uVar1 != 0) {\n      if ((1 < ovfl) && (ovfl <= pBt->nPage)) {\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }\n      pOvfl = (MemPage *)0x0;\n      iNext = 0;\n      iVar2 = sqlite3CorruptError(0x10f01);\n      goto LAB_00080870;\n    }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((1 < ovfl) && (ovfl <= pBt->nPage)) {\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }\n      pOvfl = (MemPage *)0x0;\n      iNext = 0;\n      iVar2 = sqlite3CorruptError(0x10f01);\n      goto LAB_00080870;\n    }" { (if_statement "if ((1 < ovfl) && (ovfl <= pBt->nPage)) {\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }" if (parenthesized_expression "((1 < ovfl) && (ovfl <= pBt->nPage))" ( (binary_expression "(1 < ovfl) && (ovfl <= pBt->nPage)" (parenthesized_expression "(1 < ovfl)" ( (binary_expression "1 < ovfl" number_literal < identifier) )) && (parenthesized_expression "(ovfl <= pBt->nPage)" ( (binary_expression "ovfl <= pBt->nPage" identifier <= (field_expression "pBt->nPage" identifier -> field_identifier)) ))) )) (compound_statement "{\n        do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));\n      }" { (do_statement "do {\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        } while ((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage));" do (compound_statement "{\n          pOvfl = (MemPage *)0x0;\n          iNext = 0;\n          uVar1 = uVar1 - 1;\n          if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;\n          if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }\n          if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }\n          if (iVar2 != 0) goto LAB_00080870;\n          if (uVar1 == 0) goto LAB_000808b8;\n        }" { (expression_statement "pOvfl = (MemPage *)0x0;" (assignment_expression "pOvfl = (MemPage *)0x0" identifier = (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iNext = 0;" (assignment_expression "iNext = 0" identifier = number_literal) ;) (expression_statement "uVar1 = uVar1 - 1;" (assignment_expression "uVar1 = uVar1 - 1" identifier = (binary_expression "uVar1 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))\n          goto LAB_00080870;" if (parenthesized_expression "((uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0))" ( (binary_expression "(uVar1 != 0) && (iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0)" (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0)" ( (comma_expression "iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext), iVar2 != 0" (assignment_expression "iVar2 = getOverflowPage(pBt,ovfl,&pOvfl,&iNext)" identifier = (call_expression "getOverflowPage(pBt,ovfl,&pOvfl,&iNext)" identifier (argument_list "(pBt,ovfl,&pOvfl,&iNext)" ( identifier , identifier , (pointer_expression "&pOvfl" & identifier) , (pointer_expression "&iNext" & identifier) )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00080870;" goto statement_identifier ;)) (if_statement "if ((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)) {\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }\n          else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }" if (parenthesized_expression "((pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0))" ( (binary_expression "(pOvfl == (MemPage *)0x0) &&\n             (pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)" (parenthesized_expression "(pOvfl == (MemPage *)0x0)" ( (binary_expression "pOvfl == (MemPage *)0x0" identifier == (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0)" ( (comma_expression "pOvfl = btreePageLookup(pBt,ovfl), pOvfl == (MemPage *)0x0" (assignment_expression "pOvfl = btreePageLookup(pBt,ovfl)" identifier = (call_expression "btreePageLookup(pBt,ovfl)" identifier (argument_list "(pBt,ovfl)" ( identifier , identifier )))) , (binary_expression "pOvfl == (MemPage *)0x0" identifier == (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n            iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);\n          }" { (expression_statement "iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl);" (assignment_expression "iVar2 = freePage2(pBt,(MemPage *)0x0,ovfl)" identifier = (call_expression "freePage2(pBt,(MemPage *)0x0,ovfl)" identifier (argument_list "(pBt,(MemPage *)0x0,ovfl)" ( identifier , (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;) }) (else_clause "else if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }" else (if_statement "if (pOvfl->pDbPage->nRef == 1) {\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }\n          else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }" if (parenthesized_expression "(pOvfl->pDbPage->nRef == 1)" ( (binary_expression "pOvfl->pDbPage->nRef == 1" (field_expression "pOvfl->pDbPage->nRef" (field_expression "pOvfl->pDbPage" identifier -> field_identifier) -> field_identifier) == number_literal) )) (compound_statement "{\n            iVar2 = freePage2(pBt,pOvfl,ovfl);\n          }" { (expression_statement "iVar2 = freePage2(pBt,pOvfl,ovfl);" (assignment_expression "iVar2 = freePage2(pBt,pOvfl,ovfl)" identifier = (call_expression "freePage2(pBt,pOvfl,ovfl)" identifier (argument_list "(pBt,pOvfl,ovfl)" ( identifier , identifier , identifier )))) ;) }) (else_clause "else {\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }" else (compound_statement "{\n            iVar2 = sqlite3CorruptError(0x10f15);\n          }" { (expression_statement "iVar2 = sqlite3CorruptError(0x10f15);" (assignment_expression "iVar2 = sqlite3CorruptError(0x10f15)" identifier = (call_expression "sqlite3CorruptError(0x10f15)" identifier (argument_list "(0x10f15)" ( number_literal )))) ;) }))))) (if_statement "if ((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)) {\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }" if (parenthesized_expression "((pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0))" ( (binary_expression "(pOvfl != (MemPage *)0x0) && (pOvfl->pDbPage != (DbPage *)0x0)" (parenthesized_expression "(pOvfl != (MemPage *)0x0)" ( (binary_expression "pOvfl != (MemPage *)0x0" identifier != (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pOvfl->pDbPage != (DbPage *)0x0)" ( (binary_expression "pOvfl->pDbPage != (DbPage *)0x0" (field_expression "pOvfl->pDbPage" identifier -> field_identifier) != (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            sqlite3PagerUnrefNotNull(pOvfl->pDbPage);\n          }" { (expression_statement "sqlite3PagerUnrefNotNull(pOvfl->pDbPage);" (call_expression "sqlite3PagerUnrefNotNull(pOvfl->pDbPage)" identifier (argument_list "(pOvfl->pDbPage)" ( (field_expression "pOvfl->pDbPage" identifier -> field_identifier) ))) ;) })) (if_statement "if (iVar2 != 0) goto LAB_00080870;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00080870;" goto statement_identifier ;)) (if_statement "if (uVar1 == 0) goto LAB_000808b8;" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000808b8;" goto statement_identifier ;)) }) while (parenthesized_expression "((1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage))" ( (binary_expression "(1 < iNext) && (ovfl = iNext, iNext <= pBt->nPage)" (parenthesized_expression "(1 < iNext)" ( (binary_expression "1 < iNext" number_literal < identifier) )) && (parenthesized_expression "(ovfl = iNext, iNext <= pBt->nPage)" ( (comma_expression "ovfl = iNext, iNext <= pBt->nPage" (assignment_expression "ovfl = iNext" identifier = identifier) , (binary_expression "iNext <= pBt->nPage" identifier <= (field_expression "pBt->nPage" identifier -> field_identifier))) ))) )) ;) })) (expression_statement "pOvfl = (MemPage *)0x0;" (assignment_expression "pOvfl = (MemPage *)0x0" identifier = (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iNext = 0;" (assignment_expression "iNext = 0" identifier = number_literal) ;) (expression_statement "iVar2 = sqlite3CorruptError(0x10f01);" (assignment_expression "iVar2 = sqlite3CorruptError(0x10f01)" identifier = (call_expression "sqlite3CorruptError(0x10f01)" identifier (argument_list "(0x10f01)" ( number_literal )))) ;) (goto_statement "goto LAB_00080870;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000808b8:\n  iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "int __regparm3 FUN_00080730(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int in_GS_OFFSET;\n  uint local_28;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);\n  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar3 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar3;\n}\n\n" (function_definition "int __regparm3 FUN_00080730(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int in_GS_OFFSET;\n  uint local_28;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);\n  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar3 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar3;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00080730(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int in_GS_OFFSET;\n  uint local_28;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);\n  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar3 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(param_1 + 0x50))(param_1,param_2,param_3);" (call_expression "(**(code **)(param_1 + 0x50))(param_1,param_2,param_3)" (parenthesized_expression "(**(code **)(param_1 + 0x50))" ( (pointer_expression "**(code **)(param_1 + 0x50)" * (pointer_expression "*(code **)(param_1 + 0x50)" * (cast_expression "(code **)(param_1 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) )) (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }" if (parenthesized_expression "((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc))" ( (binary_expression "(uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)" (binary_expression "(uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) != (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }" { (if_statement "if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12))" ( (binary_expression "*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)" (pointer_expression "*(uint *)(param_1 + 0x3c)" * (cast_expression "(uint *)(param_1 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) < (binary_expression "param_2 + (uint)*(ushort *)(param_3 + 0x12)" identifier + (binary_expression "(uint)*(ushort *)(param_3 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x12)" ( (binary_expression "param_3 + 0x12" identifier + number_literal) )))))) )) (compound_statement "{\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" { (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" identifier = (call_expression "FUN_00052b70()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00080870;" goto statement_identifier ;) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x34);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x34)" identifier = (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));" (assignment_expression "uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" identifier = (pointer_expression "*(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" * (cast_expression "(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" ( (binary_expression "param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12)" (binary_expression "param_2 + -4" identifier + number_literal) + (binary_expression "(uint)*(ushort *)(param_3 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x12)" ( (binary_expression "param_3 + 0x12" identifier + number_literal) ))))) ))))) ;) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | 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))) ;) (expression_statement "uVar2 = *(int *)(iVar1 + 0x24) - 4;" (assignment_expression "uVar2 = *(int *)(iVar1 + 0x24) - 4" identifier = (binary_expression "*(int *)(iVar1 + 0x24) - 4" (pointer_expression "*(int *)(iVar1 + 0x24)" * (cast_expression "(int *)(iVar1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x24)" ( (binary_expression "iVar1 + 0x24" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;" (assignment_expression "uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2" identifier = (binary_expression "(((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2" (parenthesized_expression "(((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2)" ( (binary_expression "((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2" (parenthesized_expression "((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10))" ( (binary_expression "(*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(*(uint *)(param_3 + 0xc) - 1)" ( (binary_expression "*(uint *)(param_3 + 0xc) - 1" (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) - number_literal) )) - (binary_expression "(uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) ))))) )) + identifier) )) / identifier)) ;) (if_statement "if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" { (if_statement "if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }" if (parenthesized_expression "((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c)))" ( (binary_expression "(1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))" (parenthesized_expression "(1 < uVar4)" ( (binary_expression "1 < uVar4" number_literal < identifier) )) && (parenthesized_expression "(uVar4 <= *(uint *)(iVar1 + 0x2c))" ( (binary_expression "uVar4 <= *(uint *)(iVar1 + 0x2c)" identifier <= (pointer_expression "*(uint *)(iVar1 + 0x2c)" * (cast_expression "(uint *)(iVar1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2c)" ( (binary_expression "iVar1 + 0x2c" identifier + number_literal) ))))) ))) )) (compound_statement "{\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }" { (do_statement "do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));" do (compound_statement "{\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;" if (parenthesized_expression "((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0))" ( (binary_expression "(uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)" (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 = FUN_000531b0(&local_28), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_000531b0(&local_28), iVar3 != 0" (assignment_expression "iVar3 = FUN_000531b0(&local_28)" identifier = (call_expression "FUN_000531b0(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00080870;" goto statement_identifier ;)) (if_statement "if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" if (parenthesized_expression "((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0))" ( (binary_expression "(local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)" (parenthesized_expression "(local_24 == 0)" ( (binary_expression "local_24 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_24 = FUN_0002c100(), local_24 == 0)" ( (comma_expression "local_24 = FUN_0002c100(), local_24 == 0" (assignment_expression "local_24 = FUN_0002c100()" identifier = (call_expression "FUN_0002c100()" identifier (argument_list "()" ( )))) , (binary_expression "local_24 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n            iVar3 = FUN_000803e0();\n          }" { (expression_statement "iVar3 = FUN_000803e0();" (assignment_expression "iVar3 = FUN_000803e0()" identifier = (call_expression "FUN_000803e0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" else (if_statement "if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" if (parenthesized_expression "(*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1)" ( (binary_expression "*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1" (pointer_expression "*(short *)(*(int *)(local_24 + 0x48) + 0x1e)" * (cast_expression "(short *)(*(int *)(local_24 + 0x48) + 0x1e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_24 + 0x48) + 0x1e)" ( (binary_expression "*(int *)(local_24 + 0x48) + 0x1e" (pointer_expression "*(int *)(local_24 + 0x48)" * (cast_expression "(int *)(local_24 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + 0x48)" ( (binary_expression "local_24 + 0x48" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n            iVar3 = FUN_000803e0();\n          }" { (expression_statement "iVar3 = FUN_000803e0();" (assignment_expression "iVar3 = FUN_000803e0()" identifier = (call_expression "FUN_000803e0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n            iVar3 = FUN_00052b70();\n          }" else (compound_statement "{\n            iVar3 = FUN_00052b70();\n          }" { (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" identifier = (call_expression "FUN_00052b70()" identifier (argument_list "()" ( )))) ;) }))))) (if_statement "if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }" if (parenthesized_expression "((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0))" ( (binary_expression "(local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)" (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(local_24 + 0x48) != 0)" ( (binary_expression "*(int *)(local_24 + 0x48) != 0" (pointer_expression "*(int *)(local_24 + 0x48)" * (cast_expression "(int *)(local_24 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + 0x48)" ( (binary_expression "local_24 + 0x48" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            FUN_0001c9b0();\n          }" { (expression_statement "FUN_0001c9b0();" (call_expression "FUN_0001c9b0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar3 != 0) goto LAB_00080870;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00080870;" goto statement_identifier ;)) (if_statement "if (uVar2 == 0) goto LAB_000808b8;" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000808b8;" goto statement_identifier ;)) }) while (parenthesized_expression "((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)))" ( (binary_expression "(1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c))" (parenthesized_expression "(1 < local_28)" ( (binary_expression "1 < local_28" number_literal < identifier) )) && (parenthesized_expression "(local_28 <= *(uint *)(iVar1 + 0x2c))" ( (binary_expression "local_28 <= *(uint *)(iVar1 + 0x2c)" identifier <= (pointer_expression "*(uint *)(iVar1 + 0x2c)" * (cast_expression "(uint *)(iVar1 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2c)" ( (binary_expression "iVar1 + 0x2c" identifier + number_literal) ))))) ))) )) ;) })) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" identifier = (call_expression "FUN_00052b70()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00080870;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000808b8:\n  iVar3 = 0;" statement_identifier : (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" { (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) )) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + IDENT) )) / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int __regparm3 FUN_00080730(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int in_GS_OFFSET;\n  uint local_28;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);\n  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar3 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar3;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00080730(int param_1,int param_2,int param_3)" (identifier "FUN_00080730") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int in_GS_OFFSET;\n  uint local_28;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);\n  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }\nLAB_000808b8:\n  iVar3 = 0;\nLAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar3;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "(**(code **)(param_1 + 0x50))(param_1,param_2,param_3);" (call_expression "(**(code **)(param_1 + 0x50))(param_1,param_2,param_3)" (parenthesized_expression "(**(code **)(param_1 + 0x50))" (( "(") (pointer_expression "**(code **)(param_1 + 0x50)" (* "*") (pointer_expression "*(code **)(param_1 + 0x50)" (* "*") (cast_expression "(code **)(param_1 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }" (if "if") (parenthesized_expression "((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc))" (( "(") (binary_expression "(uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)" (binary_expression "(uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(param_3 + 0x10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (pointer_expression "*(uint *)(param_3 + 0xc)" (* "*") (cast_expression "(uint *)(param_3 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\n    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n    iVar1 = *(int *)(param_1 + 0x34);\n    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));\n    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(int *)(iVar1 + 0x24) - 4;\n    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;\n    if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }\n  }" ({ "{") (if_statement "if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12))" (( "(") (binary_expression "*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)" (pointer_expression "*(uint *)(param_1 + 0x3c)" (* "*") (cast_expression "(uint *)(param_1 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (< "<") (binary_expression "param_2 + (uint)*(ushort *)(param_3 + 0x12)" (identifier "param_2") (+ "+") (binary_expression "(uint)*(ushort *)(param_3 + 0x12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(param_3 + 0x12)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x12)" (( "(") (binary_expression "param_3 + 0x12" (identifier "param_3") (+ "+") (number_literal "0x12")) () ")")))))) () ")")) (compound_statement "{\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" ({ "{") (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" (identifier "iVar3") (= "=") (call_expression "FUN_00052b70()" (identifier "FUN_00052b70") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_00080870;" (goto "goto") (statement_identifier "LAB_00080870") (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(param_1 + 0x34);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x34)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x34)" (* "*") (cast_expression "(int *)(param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));" (assignment_expression "uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" (* "*") (cast_expression "(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12))" (( "(") (binary_expression "param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12)" (binary_expression "param_2 + -4" (identifier "param_2") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "(uint)*(ushort *)(param_3 + 0x12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(param_3 + 0x12)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x12)" (( "(") (binary_expression "param_3 + 0x12" (identifier "param_3") (+ "+") (number_literal "0x12")) () ")"))))) () ")"))))) (; ";")) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (identifier "uVar4") (= "=") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar2 << 0x18" (identifier "uVar2") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar2 = *(int *)(iVar1 + 0x24) - 4;" (assignment_expression "uVar2 = *(int *)(iVar1 + 0x24) - 4" (identifier "uVar2") (= "=") (binary_expression "*(int *)(iVar1 + 0x24) - 4" (pointer_expression "*(int *)(iVar1 + 0x24)" (* "*") (cast_expression "(int *)(iVar1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x24)" (( "(") (binary_expression "iVar1 + 0x24" (identifier "iVar1") (+ "+") (number_literal "0x24")) () ")")))) (- "-") (number_literal "4"))) (; ";")) (expression_statement "uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;" (assignment_expression "uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2" (identifier "uVar2") (= "=") (binary_expression "(((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2" (parenthesized_expression "(((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2)" (( "(") (binary_expression "((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2" (parenthesized_expression "((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10))" (( "(") (binary_expression "(*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(*(uint *)(param_3 + 0xc) - 1)" (( "(") (binary_expression "*(uint *)(param_3 + 0xc) - 1" (pointer_expression "*(uint *)(param_3 + 0xc)" (* "*") (cast_expression "(uint *)(param_3 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (- "-") (number_literal "1")) () ")")) (- "-") (binary_expression "(uint)*(ushort *)(param_3 + 0x10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(param_3 + 0x10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (+ "+") (identifier "uVar2")) () ")")) (/ "/") (identifier "uVar2"))) (; ";")) (if_statement "if (uVar2 != 0) {\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }\n      local_24 = 0;\n      local_28 = 0;\n      iVar3 = FUN_00052b70();\n      goto LAB_00080870;\n    }" ({ "{") (if_statement "if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }" (if "if") (parenthesized_expression "((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c)))" (( "(") (binary_expression "(1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))" (parenthesized_expression "(1 < uVar4)" (( "(") (binary_expression "1 < uVar4" (number_literal "1") (< "<") (identifier "uVar4")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 <= *(uint *)(iVar1 + 0x2c))" (( "(") (binary_expression "uVar4 <= *(uint *)(iVar1 + 0x2c)" (identifier "uVar4") (<= "<=") (pointer_expression "*(uint *)(iVar1 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar1 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x2c)" (( "(") (binary_expression "iVar1 + 0x2c" (identifier "iVar1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n        do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));\n      }" ({ "{") (do_statement "do {\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));" (do "do") (compound_statement "{\n          local_24 = 0;\n          local_28 = 0;\n          uVar2 = uVar2 - 1;\n          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;\n          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }\n          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }\n          if (iVar3 != 0) goto LAB_00080870;\n          if (uVar2 == 0) goto LAB_000808b8;\n        }" ({ "{") (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;" (if "if") (parenthesized_expression "((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0))" (( "(") (binary_expression "(uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)" (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = FUN_000531b0(&local_28), iVar3 != 0)" (( "(") (comma_expression "iVar3 = FUN_000531b0(&local_28), iVar3 != 0" (assignment_expression "iVar3 = FUN_000531b0(&local_28)" (identifier "iVar3") (= "=") (call_expression "FUN_000531b0(&local_28)" (identifier "FUN_000531b0") (argument_list "(&local_28)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00080870;" (goto "goto") (statement_identifier "LAB_00080870") (; ";"))) (if_statement "if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {\n            iVar3 = FUN_000803e0();\n          }\n          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" (if "if") (parenthesized_expression "((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0))" (( "(") (binary_expression "(local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)" (parenthesized_expression "(local_24 == 0)" (( "(") (binary_expression "local_24 == 0" (identifier "local_24") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_24 = FUN_0002c100(), local_24 == 0)" (( "(") (comma_expression "local_24 = FUN_0002c100(), local_24 == 0" (assignment_expression "local_24 = FUN_0002c100()" (identifier "local_24") (= "=") (call_expression "FUN_0002c100()" (identifier "FUN_0002c100") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "local_24 == 0" (identifier "local_24") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n            iVar3 = FUN_000803e0();\n          }" ({ "{") (expression_statement "iVar3 = FUN_000803e0();" (assignment_expression "iVar3 = FUN_000803e0()" (identifier "iVar3") (= "=") (call_expression "FUN_000803e0()" (identifier "FUN_000803e0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" (else "else") (if_statement "if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {\n            iVar3 = FUN_000803e0();\n          }\n          else {\n            iVar3 = FUN_00052b70();\n          }" (if "if") (parenthesized_expression "(*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1)" (( "(") (binary_expression "*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1" (pointer_expression "*(short *)(*(int *)(local_24 + 0x48) + 0x1e)" (* "*") (cast_expression "(short *)(*(int *)(local_24 + 0x48) + 0x1e)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_24 + 0x48) + 0x1e)" (( "(") (binary_expression "*(int *)(local_24 + 0x48) + 0x1e" (pointer_expression "*(int *)(local_24 + 0x48)" (* "*") (cast_expression "(int *)(local_24 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + 0x48)" (( "(") (binary_expression "local_24 + 0x48" (identifier "local_24") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "0x1e")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            iVar3 = FUN_000803e0();\n          }" ({ "{") (expression_statement "iVar3 = FUN_000803e0();" (assignment_expression "iVar3 = FUN_000803e0()" (identifier "iVar3") (= "=") (call_expression "FUN_000803e0()" (identifier "FUN_000803e0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n            iVar3 = FUN_00052b70();\n          }" (else "else") (compound_statement "{\n            iVar3 = FUN_00052b70();\n          }" ({ "{") (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" (identifier "iVar3") (= "=") (call_expression "FUN_00052b70()" (identifier "FUN_00052b70") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))))) (if_statement "if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {\n            FUN_0001c9b0();\n          }" (if "if") (parenthesized_expression "((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0))" (( "(") (binary_expression "(local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)" (parenthesized_expression "(local_24 != 0)" (( "(") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(local_24 + 0x48) != 0)" (( "(") (binary_expression "*(int *)(local_24 + 0x48) != 0" (pointer_expression "*(int *)(local_24 + 0x48)" (* "*") (cast_expression "(int *)(local_24 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + 0x48)" (( "(") (binary_expression "local_24 + 0x48" (identifier "local_24") (+ "+") (number_literal "0x48")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            FUN_0001c9b0();\n          }" ({ "{") (expression_statement "FUN_0001c9b0();" (call_expression "FUN_0001c9b0()" (identifier "FUN_0001c9b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar3 != 0) goto LAB_00080870;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00080870;" (goto "goto") (statement_identifier "LAB_00080870") (; ";"))) (if_statement "if (uVar2 == 0) goto LAB_000808b8;" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000808b8;" (goto "goto") (statement_identifier "LAB_000808b8") (; ";"))) (} "}")) (while "while") (parenthesized_expression "((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)))" (( "(") (binary_expression "(1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c))" (parenthesized_expression "(1 < local_28)" (( "(") (binary_expression "1 < local_28" (number_literal "1") (< "<") (identifier "local_28")) () ")")) (&& "&&") (parenthesized_expression "(local_28 <= *(uint *)(iVar1 + 0x2c))" (( "(") (binary_expression "local_28 <= *(uint *)(iVar1 + 0x2c)" (identifier "local_28") (<= "<=") (pointer_expression "*(uint *)(iVar1 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar1 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x2c)" (( "(") (binary_expression "iVar1 + 0x2c" (identifier "iVar1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = FUN_00052b70();" (assignment_expression "iVar3 = FUN_00052b70()" (identifier "iVar3") (= "=") (call_expression "FUN_00052b70()" (identifier "FUN_00052b70") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_00080870;" (goto "goto") (statement_identifier "LAB_00080870") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000808b8:\n  iVar3 = 0;" (statement_identifier "LAB_000808b8") (: ":") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_00080870:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (statement_identifier "LAB_00080870") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" ({ "{") (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" (identifier "FUN_000f6410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

int __regparm3 function_1(type_1 *pPage,type_2 *var_2,type_3 *pInfo)

{
  type_4 *pBt;
  type_5 var_4;
  int var_7;
  type_5 var_5;
  int var_1;
  type_6 var_12;
  type_1 *var_8;
  int var_13;
  
  var_13 = *(int *)(var_1 + 0x14);
  (*pPage->xParseCell)(pPage,var_2,pInfo);
  if ((type_5)pInfo->nLocal != pInfo->nPayload) {
    if (pPage->aDataEnd < var_2 + pInfo->nSize) {
      var_7 = var_3(0x10ef0);
      goto LAB_00080870;
    }
    pBt = pPage->pBt;
    var_4 = *(type_5 *)(var_2 + (pInfo->nSize - 4));
    var_5 = var_4 >> 0x18 | (var_4 & 0xff0000) >> 8 | (var_4 & 0xff00) << 8 | var_4 << 0x18;
    var_4 = pBt->usableSize - 4;
    var_4 = (((pInfo->nPayload - 1) - (type_5)pInfo->nLocal) + var_4) / var_4;
    if (var_4 != 0) {
      if ((1 < var_5) && (var_5 <= pBt->nPage)) {
        do {
          var_8 = (type_1 *)0x0;
          var_12 = 0;
          var_4 = var_4 - 1;
          if ((var_4 != 0) && (var_7 = var_6(pBt,var_5,&var_8,&var_12), var_7 != 0))
          goto LAB_00080870;
          if ((var_8 == (type_1 *)0x0) &&
             (var_8 = var_9(pBt,var_5), var_8 == (type_1 *)0x0)) {
            var_7 = var_10(pBt,(type_1 *)0x0,var_5);
          }
          else if (var_8->pDbPage->nRef == 1) {
            var_7 = var_10(pBt,var_8,var_5);
          }
          else {
            var_7 = var_3(0x10f15);
          }
          if ((var_8 != (type_1 *)0x0) && (var_8->pDbPage != (type_7 *)0x0)) {
            var_11(var_8->pDbPage);
          }
          if (var_7 != 0) goto LAB_00080870;
          if (var_4 == 0) goto LAB_000808b8;
        } while ((1 < var_12) && (var_5 = var_12, var_12 <= pBt->nPage));
      }
      var_8 = (type_1 *)0x0;
      var_12 = 0;
      var_7 = var_3(0x10f01);
      goto LAB_00080870;
    }
  }
LAB_000808b8:
  var_7 = 0;
LAB_00080870:
  if (var_13 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_14();
  }
  return var_7;
}


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

int __regparm3 MASKED(int param_1,int param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int in_GS_OFFSET;
  uint local_28;
  int local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  (**(code **)(param_1 + 0x50))(param_1,param_2,param_3);
  if ((uint)*(ushort *)(param_3 + 0x10) != *(uint *)(param_3 + 0xc)) {
    if (*(uint *)(param_1 + 0x3c) < param_2 + (uint)*(ushort *)(param_3 + 0x12)) {
      iVar3 = FUN_00052b70();
      goto LAB_00080870;
    }
    iVar1 = *(int *)(param_1 + 0x34);
    uVar2 = *(uint *)(param_2 + -4 + (uint)*(ushort *)(param_3 + 0x12));
    uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    uVar2 = *(int *)(iVar1 + 0x24) - 4;
    uVar2 = (((*(uint *)(param_3 + 0xc) - 1) - (uint)*(ushort *)(param_3 + 0x10)) + uVar2) / uVar2;
    if (uVar2 != 0) {
      if ((1 < uVar4) && (uVar4 <= *(uint *)(iVar1 + 0x2c))) {
        do {
          local_24 = 0;
          local_28 = 0;
          uVar2 = uVar2 - 1;
          if ((uVar2 != 0) && (iVar3 = FUN_000531b0(&local_28), iVar3 != 0)) goto LAB_00080870;
          if ((local_24 == 0) && (local_24 = FUN_0002c100(), local_24 == 0)) {
            iVar3 = FUN_000803e0();
          }
          else if (*(short *)(*(int *)(local_24 + 0x48) + 0x1e) == 1) {
            iVar3 = FUN_000803e0();
          }
          else {
            iVar3 = FUN_00052b70();
          }
          if ((local_24 != 0) && (*(int *)(local_24 + 0x48) != 0)) {
            FUN_0001c9b0();
          }
          if (iVar3 != 0) goto LAB_00080870;
          if (uVar2 == 0) goto LAB_000808b8;
        } while ((1 < local_28) && (local_28 <= *(uint *)(iVar1 + 0x2c)));
      }
      local_24 = 0;
      local_28 = 0;
      iVar3 = FUN_00052b70();
      goto LAB_00080870;
    }
  }
LAB_000808b8:
  iVar3 = 0;
LAB_00080870:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return iVar3;
}

