
void sqlite3VdbePreUpdateHook
               (Vdbe *v,VdbeCursor *pCsr,int op,char *zDb,Table *pTab,i64 iKey1,int iReg)

{
  undefined *puVar1;
  int iVar2;
  PreUpdate *pPVar3;
  sqlite3 *psVar4;
  Mem *p;
  int iVar5;
  Mem *p_00;
  char *pcVar6;
  int iVar7;
  sqlite3 *db;
  PreUpdate preupdate;
  
  puVar1 = PTR___stack_chk_guard_0015ba2c;
  iVar2 = *(int *)PTR___stack_chk_guard_0015ba2c;
  db = v->db;
  pcVar6 = pTab->zName;
  pPVar3 = (PreUpdate *)(*(code *)PTR_memset_0015b9b4)(&preupdate,0,0x58);
  if ((pTab->tabFlags & 0x20) == 0) {
    preupdate.iKey2 = iKey1;
    if (op == 0x17) {
      preupdate.iKey2 = v->aMem[iReg].u.i;
    }
  }
  else {
    preupdate.pPk = pTab->pIndex;
    if ((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {
      for (preupdate.pPk = (preupdate.pPk)->pNext;
          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));
          preupdate.pPk = (preupdate.pPk)->pNext) {
      }
    }
    iKey1 = 0;
    preupdate.iKey2 = 0;
  }
  preupdate.keyinfo.nKeyField = pTab->nCol;
  preupdate.keyinfo.enc = db->enc;
  psVar4 = (sqlite3 *)db->pPreUpdateArg;
  db->pPreUpdate = pPVar3;
  preupdate.keyinfo.aSortOrder = PTR_DAT_0015b5fc + 0x2abe;
  preupdate.iNewReg = iReg;
  preupdate.pTab = pTab;
  preupdate.v = v;
  preupdate.pCsr = pCsr;
  preupdate.op = op;
  preupdate.keyinfo.db = db;
  preupdate.iKey1 = iKey1;
  (*db->xPreUpdateCallback)(psVar4,db,op,zDb,pcVar6,iKey1,preupdate.iKey2);
  db->pPreUpdate = (PreUpdate *)0x0;
  if (preupdate.aRecord != (u8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    sqlite3DbFreeNN(db,preupdate.aRecord);
  }
  iVar5 = preupdate.keyinfo.nKeyField + 1;
  if (preupdate.pUnpacked != (UnpackedRecord *)0x0) {
    psVar4 = db;
    vdbeFreeUnpacked(db,iVar5,preupdate.pUnpacked);
    iVar5 = preupdate.keyinfo.nKeyField + 1;
  }
  if (preupdate.pNewUnpacked != (UnpackedRecord *)0x0) {
    psVar4 = db;
    vdbeFreeUnpacked(db,iVar5,preupdate.pNewUnpacked);
  }
  if (preupdate.aNew != (Mem *)0x0) {
    iVar2 = (int)pCsr->nField;
    p_00 = preupdate.aNew;
    if (0 < iVar2) {
      iVar7 = 0;
      iVar5 = 0;
      do {
        p = (Mem *)((int)&p_00->u + iVar7);
        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {
          vdbeMemClear(p);
          iVar2 = (int)pCsr->nField;
          p_00 = preupdate.aNew;
        }
        iVar5 = iVar5 + 1;
        iVar7 = iVar7 + 0x28;
      } while (iVar5 < iVar2);
    }
                    /* WARNING: Subroutine does not return */
    sqlite3DbFreeNN(db,p_00);
  }
  if (iVar2 == *(int *)puVar1) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  if (psVar4 == (sqlite3 *)0x0) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  sqlite3_mutex_enter((sqlite3_mutex *)psVar4->pVfs->pNext);
}



int FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,
                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  int *piVar8;
  undefined *puVar9;
  undefined4 *local_88;
  int local_84;
  int local_80;
  int local_7c;
  undefined1 local_74;
  ushort local_72;
  int *local_6c;
  undefined *local_68;
  int local_60;
  int local_5c;
  int local_58;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_40;
  undefined4 *local_3c;
  int local_38;
  int local_2c;
  
  puVar9 = PTR___stack_chk_guard_0015ba2c;
  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;
  piVar8 = (int *)*param_1;
  uVar6 = *param_5;
  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);
  if ((param_5[9] & 0x20) == 0) {
    local_44 = param_8;
    local_48 = param_7;
    if (param_3 == 0x17) {
      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);
      local_44 = puVar2[1];
      local_48 = *puVar2;
    }
  }
  else {
    local_38 = param_5[2];
    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {
      for (local_38 = *(int *)(local_38 + 0x14);
          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));
          local_38 = *(int *)(local_38 + 0x14)) {
      }
    }
    param_7 = 0;
    param_8 = 0;
    local_44 = 0;
    local_48 = 0;
  }
  local_72 = *(ushort *)((int)param_5 + 0x2a);
  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);
  piVar3 = (int *)piVar8[0x3b];
  piVar8[0x3d] = iVar1;
  local_68 = PTR_UINT_0015b5fc + 0x2abe;
  local_58 = param_9;
  local_3c = param_5;
  local_88 = param_1;
  local_84 = param_2;
  local_80 = param_3;
  local_6c = piVar8;
  local_50 = param_7;
  local_4c = param_8;
  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);
  piVar8[0x3d] = 0;
  if (local_7c != 0) {
    piVar3 = piVar8;
    FUN_0002a924();
  }
  iVar1 = local_72 + 1;
  if (local_60 != 0) {
    piVar3 = piVar8;
    FUN_00035e50(piVar8,iVar1);
    iVar1 = local_72 + 1;
  }
  if (local_5c != 0) {
    piVar3 = piVar8;
    FUN_00035e50(piVar8,iVar1);
  }
  uVar4 = local_40;
  if (local_40 != 0) {
    iVar1 = (int)*(short *)(param_2 + 0x38);
    if (0 < iVar1) {
      iVar7 = 0;
      iVar5 = 0;
      do {
        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||
           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {
          FUN_0002aedc();
          iVar1 = (int)*(short *)(param_2 + 0x38);
          uVar4 = local_40;
        }
        iVar5 = iVar5 + 1;
        iVar7 = iVar7 + 0x28;
      } while (iVar5 < iVar1);
    }
    FUN_0002a924();
    piVar3 = piVar8;
  }
  if (local_2c == *(int *)puVar9) {
    return *(int *)puVar9;
  }
  puVar9 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  if (piVar3 == (int *)0x0) {
    return *(int *)(puVar9 + 0x125414) + 0x2a80;
  }
  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));
  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {
    return piVar3[0x1e] + uVar4 * 0x28;
  }
  iVar1 = *piVar3;
  *(undefined4 *)(iVar1 + 0x40) = 0x19;
  FUN_0002ecc0(iVar1,0x19);
  return *(int *)(puVar9 + 0x125414) + 0x2a80;
}


lui gp,0x13
addiu gp,gp,-0x2960
addu gp,gp,t9
addiu sp,sp,-0xc0
lw t9,-0x7bfc(gp)
addiu t0,sp,0x38
sw s4,0xa8(sp)
sw gp,0x28(sp)
sw s8,0xb8(sp)
or s8,a0,zero
sw s7,0xb4(sp)
or s7,a2,zero
sw s6,0xb0(sp)
li a2,0x58
sw s5,0xac(sp)
or a0,t0,zero
sw s3,0xa4(sp)
or s3,a1,zero
sw s0,0x98(sp)
or a1,zero,zero
sw ra,0xbc(sp)
sw s2,0xa0(sp)
sw s1,0x9c(sp)
lw s4,-0x7b84(gp)
lw s0,0xd0(sp)
lw s6,0xd8(sp)
lw s5,0xdc(sp)
lw v0,0x0(s4)
lw s2,0x0(s8)
lw s1,0x0(s0)
sw a3,0x34(sp)
sw v0,0x94(sp)
jalr t9
_nop
or t0,v0,zero
lw v0,0x24(s0)
lw gp,0x28(sp)
andi v0,v0,0x20
beq v0,zero,0x00036008
_lw a3,0x34(sp)
lw v0,0x8(s0)
beq v0,zero,0x00035ff0
_li a0,0x80
lbu v1,0x37(v0)
andi v1,v1,0xc0
beq v1,a0,0x00035ff0
_li a1,-0x40
b 0x00035fe8
_lw v0,0x14(v0)
lbu v1,0x37(v0)
and v1,a1,v1
beq v1,a0,0x00035ff0
_nop
lw v0,0x14(v0)
bne v0,zero,0x00035fd4
_nop
sw v0,0x88(sp)
or t2,zero,zero
or v1,zero,zero
or s6,zero,zero
b 0x0003601c
_or s5,zero,zero
li v0,0x17
beq s7,v0,0x000361b8
_lw v0,0xe0(sp)
or t2,s6,zero
or v1,s5,zero
lhu v0,0x2a(s0)
or a1,s2,zero
lbu t3,0x4e(s2)
or a2,s7,zero
lw a0,0xec(s2)
sh v0,0x4e(sp)
sw t0,0xf4(s2)
sw t2,0x20(sp)
sw v1,0x24(sp)
sw s6,0x18(sp)
sw s5,0x1c(sp)
sw s1,0x10(sp)
lw v0,-0x7fb4(gp)
lw t0,0xe0(sp)
lw t9,0xf0(s2)
addiu v0,v0,0x2abe
sw s8,0x38(sp)
sw s3,0x3c(sp)
sw s7,0x40(sp)
sw t0,0x68(sp)
sw s2,0x54(sp)
sb t3,0x4c(sp)
sw v0,0x58(sp)
sw s6,0x70(sp)
sw s5,0x74(sp)
sw t2,0x78(sp)
sw v1,0x7c(sp)
jalr t9
_sw s0,0x84(sp)
lw a1,0x44(sp)
lw gp,0x28(sp)
beq a1,zero,0x000360b4
_sw zero,0xf4(s2)
lw t9,-0x7ed8(gp)
addiu t9,t9,-0x56dc
bal 0x0002a924
_or a0,s2,zero
lw gp,0x28(sp)
lhu a1,0x4e(sp)
lw a2,0x60(sp)
beq a2,zero,0x000360e0
_addiu a1,a1,0x1
lw t9,-0x7ed8(gp)
addiu t9,t9,0x5e50
bal 0x00035e50
_or a0,s2,zero
lhu a1,0x4e(sp)
lw gp,0x28(sp)
addiu a1,a1,0x1
lw a2,0x64(sp)
beq a2,zero,0x000360fc
_lw t9,-0x7ed8(gp)
addiu t9,t9,0x5e50
bal 0x00035e50
_or a0,s2,zero
lw gp,0x28(sp)
lw a1,0x80(sp)
beq a1,zero,0x0003617c
_nop
lh v1,0x38(s3)
blez v1,0x0003616c
_lw t9,-0x7ed8(gp)
lw s5,-0x7ed8(gp)
or s1,zero,zero
or s0,zero,zero
addiu s5,s5,-0x5124
addu a0,a1,s1
lhu v0,0x8(a0)
andi v0,v0,0x2400
bne v0,zero,0x00036144
_or t9,s5,zero
lw v0,0x18(a0)
beq v0,zero,0x00036158
_nop
bal 0x0002aedc
_nop
lw gp,0x28(sp)
lw a1,0x80(sp)
lh v1,0x38(s3)
addiu s0,s0,0x1
slt v0,s0,v1
bne v0,zero,0x00036124
_addiu s1,s1,0x28
lw t9,-0x7ed8(gp)
addiu t9,t9,-0x56dc
bal 0x0002a924
_or a0,s2,zero
lw gp,0x28(sp)
lw v1,0x94(sp)
lw v0,0x0(s4)
bne v1,v0,0x000361dc
_lw ra,0xbc(sp)
lw s8,0xb8(sp)
lw s7,0xb4(sp)
lw s6,0xb0(sp)
lw s5,0xac(sp)
lw s4,0xa8(sp)
lw s3,0xa4(sp)
lw s2,0xa0(sp)
lw s1,0x9c(sp)
lw s0,0x98(sp)
jr ra
_addiu sp,sp,0xc0
lw a0,0xe0(sp)
lw v1,0x58(s8)
sll v0,v0,0x2
addu v0,v0,a0
sll v0,v0,0x3
addu v0,v1,v0
lw t2,0x0(v0)
b 0x0003601c
_lw v1,0x4(v0)
lw t9,-0x7ba0(gp)
jalr t9
_nop
(translation_unit "int FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int *piVar8;\n  undefined *puVar9;\n  undefined4 *local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  undefined1 local_74;\n  ushort local_72;\n  int *local_6c;\n  undefined *local_68;\n  int local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined4 *local_3c;\n  int local_38;\n  int local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_0015ba2c;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  piVar8 = (int *)*param_1;\n  uVar6 = *param_5;\n  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);\n  if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }\n  local_72 = *(ushort *)((int)param_5 + 0x2a);\n  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);\n  piVar3 = (int *)piVar8[0x3b];\n  piVar8[0x3d] = iVar1;\n  local_68 = PTR_UINT_0015b5fc + 0x2abe;\n  local_58 = param_9;\n  local_3c = param_5;\n  local_88 = param_1;\n  local_84 = param_2;\n  local_80 = param_3;\n  local_6c = piVar8;\n  local_50 = param_7;\n  local_4c = param_8;\n  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);\n  piVar8[0x3d] = 0;\n  if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }\n  iVar1 = local_72 + 1;\n  if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }\n  if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }\n  uVar4 = local_40;\n  if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }\n  if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));\n  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }\n  iVar1 = *piVar3;\n  *(undefined4 *)(iVar1 + 0x40) = 0x19;\n  FUN_0002ecc0(iVar1,0x19);\n  return *(int *)(puVar9 + 0x125414) + 0x2a80;\n}\n\n" (function_definition "int FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int *piVar8;\n  undefined *puVar9;\n  undefined4 *local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  undefined1 local_74;\n  ushort local_72;\n  int *local_6c;\n  undefined *local_68;\n  int local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined4 *local_3c;\n  int local_38;\n  int local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_0015ba2c;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  piVar8 = (int *)*param_1;\n  uVar6 = *param_5;\n  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);\n  if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }\n  local_72 = *(ushort *)((int)param_5 + 0x2a);\n  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);\n  piVar3 = (int *)piVar8[0x3b];\n  piVar8[0x3d] = iVar1;\n  local_68 = PTR_UINT_0015b5fc + 0x2abe;\n  local_58 = param_9;\n  local_3c = param_5;\n  local_88 = param_1;\n  local_84 = param_2;\n  local_80 = param_3;\n  local_6c = piVar8;\n  local_50 = param_7;\n  local_4c = param_8;\n  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);\n  piVar8[0x3d] = 0;\n  if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }\n  iVar1 = local_72 + 1;\n  if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }\n  if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }\n  uVar4 = local_40;\n  if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }\n  if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));\n  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }\n  iVar1 = *piVar3;\n  *(undefined4 *)(iVar1 + 0x40) = 0x19;\n  FUN_0002ecc0(iVar1,0x19);\n  return *(int *)(puVar9 + 0x125414) + 0x2a80;\n}" primitive_type (function_declarator "FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "int param_9" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int *piVar8;\n  undefined *puVar9;\n  undefined4 *local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  undefined1 local_74;\n  ushort local_72;\n  int *local_6c;\n  undefined *local_68;\n  int local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined4 *local_3c;\n  int local_38;\n  int local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_0015ba2c;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  piVar8 = (int *)*param_1;\n  uVar6 = *param_5;\n  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);\n  if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }\n  local_72 = *(ushort *)((int)param_5 + 0x2a);\n  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);\n  piVar3 = (int *)piVar8[0x3b];\n  piVar8[0x3d] = iVar1;\n  local_68 = PTR_UINT_0015b5fc + 0x2abe;\n  local_58 = param_9;\n  local_3c = param_5;\n  local_88 = param_1;\n  local_84 = param_2;\n  local_80 = param_3;\n  local_6c = piVar8;\n  local_50 = param_7;\n  local_4c = param_8;\n  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);\n  piVar8[0x3d] = 0;\n  if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }\n  iVar1 = local_72 + 1;\n  if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }\n  if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }\n  uVar4 = local_40;\n  if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }\n  if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));\n  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }\n  iVar1 = *piVar3;\n  *(undefined4 *)(iVar1 + 0x40) = 0x19;\n  FUN_0002ecc0(iVar1,0x19);\n  return *(int *)(puVar9 + 0x125414) + 0x2a80;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "undefined1 local_74;" type_identifier identifier ;) (declaration "ushort local_72;" type_identifier identifier ;) (declaration "int *local_6c;" primitive_type (pointer_declarator "*local_6c" * identifier) ;) (declaration "undefined *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined4 *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar9 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar9 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar8 = (int *)*param_1;" (assignment_expression "piVar8 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar6 = *param_5;" (assignment_expression "uVar6 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);" (assignment_expression "iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58)" identifier = (call_expression "(*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58)" (parenthesized_expression "(*(code *)PTR_memset_0015b9b4)" ( (pointer_expression "*(code *)PTR_memset_0015b9b4" * (cast_expression "(code *)PTR_memset_0015b9b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_88,0,0x58)" ( (pointer_expression "&local_88" & identifier) , number_literal , number_literal )))) ;) (if_statement "if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" if (parenthesized_expression "((param_5[9] & 0x20) == 0)" ( (binary_expression "(param_5[9] & 0x20) == 0" (parenthesized_expression "(param_5[9] & 0x20)" ( (binary_expression "param_5[9] & 0x20" (subscript_expression "param_5[9]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }" { (expression_statement "local_44 = param_8;" (assignment_expression "local_44 = param_8" identifier = identifier) ;) (expression_statement "local_48 = param_7;" (assignment_expression "local_48 = param_7" identifier = identifier) ;) (if_statement "if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }" if (parenthesized_expression "(param_3 == 0x17)" ( (binary_expression "param_3 == 0x17" identifier == number_literal) )) (compound_statement "{\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }" { (expression_statement "puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);" (assignment_expression "puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28)" identifier = (cast_expression "(undefined4 *)(param_1[0x16] + param_9 * 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x16] + param_9 * 0x28)" ( (binary_expression "param_1[0x16] + param_9 * 0x28" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) + (binary_expression "param_9 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "local_44 = puVar2[1];" (assignment_expression "local_44 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "local_48 = *puVar2;" (assignment_expression "local_48 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) })) }) (else_clause "else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" else (compound_statement "{\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" { (expression_statement "local_38 = param_5[2];" (assignment_expression "local_38 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) (if_statement "if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }" if (parenthesized_expression "((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80))" ( (binary_expression "(local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" (parenthesized_expression "(local_38 != 0)" ( (binary_expression "local_38 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" ( (binary_expression "(*(byte *)(local_38 + 0x37) & 0xc0) != 0x80" (parenthesized_expression "(*(byte *)(local_38 + 0x37) & 0xc0)" ( (binary_expression "*(byte *)(local_38 + 0x37) & 0xc0" (pointer_expression "*(byte *)(local_38 + 0x37)" * (cast_expression "(byte *)(local_38 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x37)" ( (binary_expression "local_38 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }" { (for_statement "for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }" for ( (assignment_expression "local_38 = *(int *)(local_38 + 0x14)" identifier = (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) ))))) ; (parenthesized_expression "(local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80))" ( (binary_expression "local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" (binary_expression "local_38 != 0" identifier != number_literal) && (parenthesized_expression "((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" ( (binary_expression "(*(byte *)(local_38 + 0x37) & 0xc0) != 0x80" (parenthesized_expression "(*(byte *)(local_38 + 0x37) & 0xc0)" ( (binary_expression "*(byte *)(local_38 + 0x37) & 0xc0" (pointer_expression "*(byte *)(local_38 + 0x37)" * (cast_expression "(byte *)(local_38 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x37)" ( (binary_expression "local_38 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) ; (assignment_expression "local_38 = *(int *)(local_38 + 0x14)" identifier = (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) ))))) ) (compound_statement "{\n      }" { })) })) (expression_statement "param_7 = 0;" (assignment_expression "param_7 = 0" identifier = number_literal) ;) (expression_statement "param_8 = 0;" (assignment_expression "param_8 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) }))) (expression_statement "local_72 = *(ushort *)((int)param_5 + 0x2a);" (assignment_expression "local_72 = *(ushort *)((int)param_5 + 0x2a)" identifier = (pointer_expression "*(ushort *)((int)param_5 + 0x2a)" * (cast_expression "(ushort *)((int)param_5 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x2a)" ( (binary_expression "(int)param_5 + 0x2a" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_74 = *(undefined1 *)((int)piVar8 + 0x4e);" (assignment_expression "local_74 = *(undefined1 *)((int)piVar8 + 0x4e)" identifier = (pointer_expression "*(undefined1 *)((int)piVar8 + 0x4e)" * (cast_expression "(undefined1 *)((int)piVar8 + 0x4e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x4e)" ( (binary_expression "(int)piVar8 + 0x4e" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar3 = (int *)piVar8[0x3b];" (assignment_expression "piVar3 = (int *)piVar8[0x3b]" identifier = (cast_expression "(int *)piVar8[0x3b]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0x3b]" identifier [ number_literal ]))) ;) (expression_statement "piVar8[0x3d] = iVar1;" (assignment_expression "piVar8[0x3d] = iVar1" (subscript_expression "piVar8[0x3d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_68 = PTR_UINT_0015b5fc + 0x2abe;" (assignment_expression "local_68 = PTR_UINT_0015b5fc + 0x2abe" identifier = (binary_expression "PTR_UINT_0015b5fc + 0x2abe" identifier + number_literal)) ;) (expression_statement "local_58 = param_9;" (assignment_expression "local_58 = param_9" identifier = identifier) ;) (expression_statement "local_3c = param_5;" (assignment_expression "local_3c = param_5" identifier = identifier) ;) (expression_statement "local_88 = param_1;" (assignment_expression "local_88 = param_1" identifier = identifier) ;) (expression_statement "local_84 = param_2;" (assignment_expression "local_84 = param_2" identifier = identifier) ;) (expression_statement "local_80 = param_3;" (assignment_expression "local_80 = param_3" identifier = identifier) ;) (expression_statement "local_6c = piVar8;" (assignment_expression "local_6c = piVar8" identifier = identifier) ;) (expression_statement "local_50 = param_7;" (assignment_expression "local_50 = param_7" identifier = identifier) ;) (expression_statement "local_4c = param_8;" (assignment_expression "local_4c = param_8" identifier = identifier) ;) (expression_statement "(*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);" (call_expression "(*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6)" (parenthesized_expression "(*(code *)piVar8[0x3c])" ( (pointer_expression "*(code *)piVar8[0x3c]" * (cast_expression "(code *)piVar8[0x3c]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0x3c]" identifier [ number_literal ]))) )) (argument_list "(piVar3,piVar8,param_3,param_4,uVar6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "piVar8[0x3d] = 0;" (assignment_expression "piVar8[0x3d] = 0" (subscript_expression "piVar8[0x3d]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }" if (parenthesized_expression "(local_7c != 0)" ( (binary_expression "local_7c != 0" identifier != number_literal) )) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }" { (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" identifier = identifier) ;) (expression_statement "FUN_0002a924();" (call_expression "FUN_0002a924()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar1 = local_72 + 1;" (assignment_expression "iVar1 = local_72 + 1" identifier = (binary_expression "local_72 + 1" identifier + number_literal)) ;) (if_statement "if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }" if (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }" { (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" identifier = identifier) ;) (expression_statement "FUN_00035e50(piVar8,iVar1);" (call_expression "FUN_00035e50(piVar8,iVar1)" identifier (argument_list "(piVar8,iVar1)" ( identifier , identifier ))) ;) (expression_statement "iVar1 = local_72 + 1;" (assignment_expression "iVar1 = local_72 + 1" identifier = (binary_expression "local_72 + 1" identifier + number_literal)) ;) })) (if_statement "if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }" if (parenthesized_expression "(local_5c != 0)" ( (binary_expression "local_5c != 0" identifier != number_literal) )) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }" { (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" identifier = identifier) ;) (expression_statement "FUN_00035e50(piVar8,iVar1);" (call_expression "FUN_00035e50(piVar8,iVar1)" identifier (argument_list "(piVar8,iVar1)" ( identifier , identifier ))) ;) })) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" identifier = identifier) ;) (if_statement "if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }" { (expression_statement "iVar1 = (int)*(short *)(param_2 + 0x38);" (assignment_expression "iVar1 = (int)*(short *)(param_2 + 0x38)" identifier = (cast_expression "(int)*(short *)(param_2 + 0x38)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(param_2 + 0x38)" * (cast_expression "(short *)(param_2 + 0x38)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))))) ;) (if_statement "if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }" if (parenthesized_expression "(0 < iVar1)" ( (binary_expression "0 < iVar1" number_literal < identifier) )) (compound_statement "{\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);" do (compound_statement "{\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      }" { (if_statement "if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }" if (parenthesized_expression "(((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0))" ( (binary_expression "((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)" (parenthesized_expression "((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0)" ( (binary_expression "(*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(uVar4 + iVar7 + 8) & 0x2400)" ( (binary_expression "*(ushort *)(uVar4 + iVar7 + 8) & 0x2400" (pointer_expression "*(ushort *)(uVar4 + iVar7 + 8)" * (cast_expression "(ushort *)(uVar4 + iVar7 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + iVar7 + 8)" ( (binary_expression "uVar4 + iVar7 + 8" (binary_expression "uVar4 + iVar7" identifier + identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(*(int *)(uVar4 + iVar7 + 0x18) != 0)" ( (binary_expression "*(int *)(uVar4 + iVar7 + 0x18) != 0" (pointer_expression "*(int *)(uVar4 + iVar7 + 0x18)" * (cast_expression "(int *)(uVar4 + iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + iVar7 + 0x18)" ( (binary_expression "uVar4 + iVar7 + 0x18" (binary_expression "uVar4 + iVar7" identifier + identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }" { (expression_statement "FUN_0002aedc();" (call_expression "FUN_0002aedc()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = (int)*(short *)(param_2 + 0x38);" (assignment_expression "iVar1 = (int)*(short *)(param_2 + 0x38)" identifier = (cast_expression "(int)*(short *)(param_2 + 0x38)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(param_2 + 0x38)" * (cast_expression "(short *)(param_2 + 0x38)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" identifier = identifier) ;) })) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar7 + 0x28;" (assignment_expression "iVar7 = iVar7 + 0x28" identifier = (binary_expression "iVar7 + 0x28" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 < iVar1)" ( (binary_expression "iVar5 < iVar1" identifier < identifier) )) ;) })) (expression_statement "FUN_0002a924();" (call_expression "FUN_0002a924()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" identifier = identifier) ;) })) (if_statement "if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar9)" ( (binary_expression "local_2c == *(int *)puVar9" identifier == (pointer_expression "*(int *)puVar9" * (cast_expression "(int *)puVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar9;\n  }" { (return_statement "return *(int *)puVar9;" return (pointer_expression "*(int *)puVar9" * (cast_expression "(int *)puVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar9 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar9 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }" { (return_statement "return *(int *)(puVar9 + 0x125414) + 0x2a80;" return (binary_expression "*(int *)(puVar9 + 0x125414) + 0x2a80" (pointer_expression "*(int *)(puVar9 + 0x125414)" * (cast_expression "(int *)(puVar9 + 0x125414)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x125414)" ( (binary_expression "puVar9 + 0x125414" identifier + number_literal) )))) + number_literal) ;) })) (expression_statement "sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));" (call_expression "sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc))" identifier (argument_list "(*(undefined4 *)(*piVar3 + 0xc))" ( (pointer_expression "*(undefined4 *)(*piVar3 + 0xc)" * (cast_expression "(undefined4 *)(*piVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + 0xc)" ( (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" * identifier) + number_literal) )))) ))) ;) (if_statement "if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }" if (parenthesized_expression "((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24)))" ( (binary_expression "(piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))" (parenthesized_expression "(piVar3[0x1e] != 0)" ( (binary_expression "piVar3[0x1e] != 0" (subscript_expression "piVar3[0x1e]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(uVar4 < *(ushort *)(piVar3 + 0x24))" ( (binary_expression "uVar4 < *(ushort *)(piVar3 + 0x24)" identifier < (pointer_expression "*(ushort *)(piVar3 + 0x24)" * (cast_expression "(ushort *)(piVar3 + 0x24)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 0x24)" ( (binary_expression "piVar3 + 0x24" identifier + number_literal) ))))) ))) )) (compound_statement "{\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }" { (return_statement "return piVar3[0x1e] + uVar4 * 0x28;" return (binary_expression "piVar3[0x1e] + uVar4 * 0x28" (subscript_expression "piVar3[0x1e]" identifier [ number_literal ]) + (binary_expression "uVar4 * 0x28" identifier * number_literal)) ;) })) (expression_statement "iVar1 = *piVar3;" (assignment_expression "iVar1 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar1 + 0x40) = 0x19;" (assignment_expression "*(undefined4 *)(iVar1 + 0x40) = 0x19" (pointer_expression "*(undefined4 *)(iVar1 + 0x40)" * (cast_expression "(undefined4 *)(iVar1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0002ecc0(iVar1,0x19);" (call_expression "FUN_0002ecc0(iVar1,0x19)" identifier (argument_list "(iVar1,0x19)" ( identifier , number_literal ))) ;) (return_statement "return *(int *)(puVar9 + 0x125414) + 0x2a80;" return (binary_expression "*(int *)(puVar9 + 0x125414) + 0x2a80" (pointer_expression "*(int *)(puVar9 + 0x125414)" * (cast_expression "(int *)(puVar9 + 0x125414)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x125414)" ( (binary_expression "puVar9 + 0x125414" identifier + number_literal) )))) + number_literal) ;) })))
(translation_unit "void sqlite3VdbePreUpdateHook\n               (Vdbe *v,VdbeCursor *pCsr,int op,char *zDb,Table *pTab,i64 iKey1,int iReg)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  PreUpdate *pPVar3;\n  sqlite3 *psVar4;\n  Mem *p;\n  int iVar5;\n  Mem *p_00;\n  char *pcVar6;\n  int iVar7;\n  sqlite3 *db;\n  PreUpdate preupdate;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_0015ba2c;\n  db = v->db;\n  pcVar6 = pTab->zName;\n  pPVar3 = (PreUpdate *)(*(code *)PTR_memset_0015b9b4)(&preupdate,0,0x58);\n  if ((pTab->tabFlags & 0x20) == 0) {\n    preupdate.iKey2 = iKey1;\n    if (op == 0x17) {\n      preupdate.iKey2 = v->aMem[iReg].u.i;\n    }\n  }\n  else {\n    preupdate.pPk = pTab->pIndex;\n    if ((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {\n      for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }\n    }\n    iKey1 = 0;\n    preupdate.iKey2 = 0;\n  }\n  preupdate.keyinfo.nKeyField = pTab->nCol;\n  preupdate.keyinfo.enc = db->enc;\n  psVar4 = (sqlite3 *)db->pPreUpdateArg;\n  db->pPreUpdate = pPVar3;\n  preupdate.keyinfo.aSortOrder = PTR_DAT_0015b5fc + 0x2abe;\n  preupdate.iNewReg = iReg;\n  preupdate.pTab = pTab;\n  preupdate.v = v;\n  preupdate.pCsr = pCsr;\n  preupdate.op = op;\n  preupdate.keyinfo.db = db;\n  preupdate.iKey1 = iKey1;\n  (*db->xPreUpdateCallback)(psVar4,db,op,zDb,pcVar6,iKey1,preupdate.iKey2);\n  db->pPreUpdate = (PreUpdate *)0x0;\n  if (preupdate.aRecord != (u8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,preupdate.aRecord);\n  }\n  iVar5 = preupdate.keyinfo.nKeyField + 1;\n  if (preupdate.pUnpacked != (UnpackedRecord *)0x0) {\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pUnpacked);\n    iVar5 = preupdate.keyinfo.nKeyField + 1;\n  }\n  if (preupdate.pNewUnpacked != (UnpackedRecord *)0x0) {\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pNewUnpacked);\n  }\n  if (preupdate.aNew != (Mem *)0x0) {\n    iVar2 = (int)pCsr->nField;\n    p_00 = preupdate.aNew;\n    if (0 < iVar2) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar2);\n    }\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,p_00);\n  }\n  if (iVar2 == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (psVar4 == (sqlite3 *)0x0) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  sqlite3_mutex_enter((sqlite3_mutex *)psVar4->pVfs->pNext);\n}\n\n" (function_definition "void sqlite3VdbePreUpdateHook\n               (Vdbe *v,VdbeCursor *pCsr,int op,char *zDb,Table *pTab,i64 iKey1,int iReg)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  PreUpdate *pPVar3;\n  sqlite3 *psVar4;\n  Mem *p;\n  int iVar5;\n  Mem *p_00;\n  char *pcVar6;\n  int iVar7;\n  sqlite3 *db;\n  PreUpdate preupdate;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_0015ba2c;\n  db = v->db;\n  pcVar6 = pTab->zName;\n  pPVar3 = (PreUpdate *)(*(code *)PTR_memset_0015b9b4)(&preupdate,0,0x58);\n  if ((pTab->tabFlags & 0x20) == 0) {\n    preupdate.iKey2 = iKey1;\n    if (op == 0x17) {\n      preupdate.iKey2 = v->aMem[iReg].u.i;\n    }\n  }\n  else {\n    preupdate.pPk = pTab->pIndex;\n    if ((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {\n      for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }\n    }\n    iKey1 = 0;\n    preupdate.iKey2 = 0;\n  }\n  preupdate.keyinfo.nKeyField = pTab->nCol;\n  preupdate.keyinfo.enc = db->enc;\n  psVar4 = (sqlite3 *)db->pPreUpdateArg;\n  db->pPreUpdate = pPVar3;\n  preupdate.keyinfo.aSortOrder = PTR_DAT_0015b5fc + 0x2abe;\n  preupdate.iNewReg = iReg;\n  preupdate.pTab = pTab;\n  preupdate.v = v;\n  preupdate.pCsr = pCsr;\n  preupdate.op = op;\n  preupdate.keyinfo.db = db;\n  preupdate.iKey1 = iKey1;\n  (*db->xPreUpdateCallback)(psVar4,db,op,zDb,pcVar6,iKey1,preupdate.iKey2);\n  db->pPreUpdate = (PreUpdate *)0x0;\n  if (preupdate.aRecord != (u8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,preupdate.aRecord);\n  }\n  iVar5 = preupdate.keyinfo.nKeyField + 1;\n  if (preupdate.pUnpacked != (UnpackedRecord *)0x0) {\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pUnpacked);\n    iVar5 = preupdate.keyinfo.nKeyField + 1;\n  }\n  if (preupdate.pNewUnpacked != (UnpackedRecord *)0x0) {\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pNewUnpacked);\n  }\n  if (preupdate.aNew != (Mem *)0x0) {\n    iVar2 = (int)pCsr->nField;\n    p_00 = preupdate.aNew;\n    if (0 < iVar2) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar2);\n    }\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,p_00);\n  }\n  if (iVar2 == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (psVar4 == (sqlite3 *)0x0) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  sqlite3_mutex_enter((sqlite3_mutex *)psVar4->pVfs->pNext);\n}" primitive_type (function_declarator "sqlite3VdbePreUpdateHook\n               (Vdbe *v,VdbeCursor *pCsr,int op,char *zDb,Table *pTab,i64 iKey1,int iReg)" identifier (parameter_list "(Vdbe *v,VdbeCursor *pCsr,int op,char *zDb,Table *pTab,i64 iKey1,int iReg)" ( (parameter_declaration "Vdbe *v" type_identifier (pointer_declarator "*v" * identifier)) , (parameter_declaration "VdbeCursor *pCsr" type_identifier (pointer_declarator "*pCsr" * identifier)) , (parameter_declaration "int op" primitive_type identifier) , (parameter_declaration "char *zDb" primitive_type (pointer_declarator "*zDb" * identifier)) , (parameter_declaration "Table *pTab" type_identifier (pointer_declarator "*pTab" * identifier)) , (parameter_declaration "i64 iKey1" type_identifier identifier) , (parameter_declaration "int iReg" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  PreUpdate *pPVar3;\n  sqlite3 *psVar4;\n  Mem *p;\n  int iVar5;\n  Mem *p_00;\n  char *pcVar6;\n  int iVar7;\n  sqlite3 *db;\n  PreUpdate preupdate;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_0015ba2c;\n  db = v->db;\n  pcVar6 = pTab->zName;\n  pPVar3 = (PreUpdate *)(*(code *)PTR_memset_0015b9b4)(&preupdate,0,0x58);\n  if ((pTab->tabFlags & 0x20) == 0) {\n    preupdate.iKey2 = iKey1;\n    if (op == 0x17) {\n      preupdate.iKey2 = v->aMem[iReg].u.i;\n    }\n  }\n  else {\n    preupdate.pPk = pTab->pIndex;\n    if ((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {\n      for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }\n    }\n    iKey1 = 0;\n    preupdate.iKey2 = 0;\n  }\n  preupdate.keyinfo.nKeyField = pTab->nCol;\n  preupdate.keyinfo.enc = db->enc;\n  psVar4 = (sqlite3 *)db->pPreUpdateArg;\n  db->pPreUpdate = pPVar3;\n  preupdate.keyinfo.aSortOrder = PTR_DAT_0015b5fc + 0x2abe;\n  preupdate.iNewReg = iReg;\n  preupdate.pTab = pTab;\n  preupdate.v = v;\n  preupdate.pCsr = pCsr;\n  preupdate.op = op;\n  preupdate.keyinfo.db = db;\n  preupdate.iKey1 = iKey1;\n  (*db->xPreUpdateCallback)(psVar4,db,op,zDb,pcVar6,iKey1,preupdate.iKey2);\n  db->pPreUpdate = (PreUpdate *)0x0;\n  if (preupdate.aRecord != (u8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,preupdate.aRecord);\n  }\n  iVar5 = preupdate.keyinfo.nKeyField + 1;\n  if (preupdate.pUnpacked != (UnpackedRecord *)0x0) {\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pUnpacked);\n    iVar5 = preupdate.keyinfo.nKeyField + 1;\n  }\n  if (preupdate.pNewUnpacked != (UnpackedRecord *)0x0) {\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pNewUnpacked);\n  }\n  if (preupdate.aNew != (Mem *)0x0) {\n    iVar2 = (int)pCsr->nField;\n    p_00 = preupdate.aNew;\n    if (0 < iVar2) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar2);\n    }\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,p_00);\n  }\n  if (iVar2 == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (psVar4 == (sqlite3 *)0x0) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  sqlite3_mutex_enter((sqlite3_mutex *)psVar4->pVfs->pNext);\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "PreUpdate *pPVar3;" type_identifier (pointer_declarator "*pPVar3" * identifier) ;) (declaration "sqlite3 *psVar4;" type_identifier (pointer_declarator "*psVar4" * identifier) ;) (declaration "Mem *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "Mem *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "PreUpdate preupdate;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "db = v->db;" (assignment_expression "db = v->db" identifier = (field_expression "v->db" identifier -> field_identifier)) ;) (expression_statement "pcVar6 = pTab->zName;" (assignment_expression "pcVar6 = pTab->zName" identifier = (field_expression "pTab->zName" identifier -> field_identifier)) ;) (expression_statement "pPVar3 = (PreUpdate *)(*(code *)PTR_memset_0015b9b4)(&preupdate,0,0x58);" (assignment_expression "pPVar3 = (PreUpdate *)(*(code *)PTR_memset_0015b9b4)(&preupdate,0,0x58)" identifier = (cast_expression "(PreUpdate *)(*(code *)PTR_memset_0015b9b4)(&preupdate,0,0x58)" ( (type_descriptor "PreUpdate *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memset_0015b9b4)(&preupdate,0,0x58)" (parenthesized_expression "(*(code *)PTR_memset_0015b9b4)" ( (pointer_expression "*(code *)PTR_memset_0015b9b4" * (cast_expression "(code *)PTR_memset_0015b9b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&preupdate,0,0x58)" ( (pointer_expression "&preupdate" & identifier) , number_literal , number_literal ))))) ;) (if_statement "if ((pTab->tabFlags & 0x20) == 0) {\n    preupdate.iKey2 = iKey1;\n    if (op == 0x17) {\n      preupdate.iKey2 = v->aMem[iReg].u.i;\n    }\n  }\n  else {\n    preupdate.pPk = pTab->pIndex;\n    if ((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {\n      for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }\n    }\n    iKey1 = 0;\n    preupdate.iKey2 = 0;\n  }" if (parenthesized_expression "((pTab->tabFlags & 0x20) == 0)" ( (binary_expression "(pTab->tabFlags & 0x20) == 0" (parenthesized_expression "(pTab->tabFlags & 0x20)" ( (binary_expression "pTab->tabFlags & 0x20" (field_expression "pTab->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    preupdate.iKey2 = iKey1;\n    if (op == 0x17) {\n      preupdate.iKey2 = v->aMem[iReg].u.i;\n    }\n  }" { (expression_statement "preupdate.iKey2 = iKey1;" (assignment_expression "preupdate.iKey2 = iKey1" (field_expression "preupdate.iKey2" identifier . field_identifier) = identifier) ;) (if_statement "if (op == 0x17) {\n      preupdate.iKey2 = v->aMem[iReg].u.i;\n    }" if (parenthesized_expression "(op == 0x17)" ( (binary_expression "op == 0x17" identifier == number_literal) )) (compound_statement "{\n      preupdate.iKey2 = v->aMem[iReg].u.i;\n    }" { (expression_statement "preupdate.iKey2 = v->aMem[iReg].u.i;" (assignment_expression "preupdate.iKey2 = v->aMem[iReg].u.i" (field_expression "preupdate.iKey2" identifier . field_identifier) = (field_expression "v->aMem[iReg].u.i" (field_expression "v->aMem[iReg].u" (subscript_expression "v->aMem[iReg]" (field_expression "v->aMem" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier)) ;) })) }) (else_clause "else {\n    preupdate.pPk = pTab->pIndex;\n    if ((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {\n      for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }\n    }\n    iKey1 = 0;\n    preupdate.iKey2 = 0;\n  }" else (compound_statement "{\n    preupdate.pPk = pTab->pIndex;\n    if ((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {\n      for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }\n    }\n    iKey1 = 0;\n    preupdate.iKey2 = 0;\n  }" { (expression_statement "preupdate.pPk = pTab->pIndex;" (assignment_expression "preupdate.pPk = pTab->pIndex" (field_expression "preupdate.pPk" identifier . field_identifier) = (field_expression "pTab->pIndex" identifier -> field_identifier)) ;) (if_statement "if ((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {\n      for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }\n    }" if (parenthesized_expression "((preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80))" ( (binary_expression "(preupdate.pPk != (Index *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)" (parenthesized_expression "(preupdate.pPk != (Index *)0x0)" ( (binary_expression "preupdate.pPk != (Index *)0x0" (field_expression "preupdate.pPk" identifier . field_identifier) != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)" ( (binary_expression "((preupdate.pPk)->field_0x37 & 0xc0) != 0x80" (parenthesized_expression "((preupdate.pPk)->field_0x37 & 0xc0)" ( (binary_expression "(preupdate.pPk)->field_0x37 & 0xc0" (field_expression "(preupdate.pPk)->field_0x37" (parenthesized_expression "(preupdate.pPk)" ( (field_expression "preupdate.pPk" identifier . field_identifier) )) -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }\n    }" { (for_statement "for (preupdate.pPk = (preupdate.pPk)->pNext;\n          (preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));\n          preupdate.pPk = (preupdate.pPk)->pNext) {\n      }" for ( (assignment_expression "preupdate.pPk = (preupdate.pPk)->pNext" (field_expression "preupdate.pPk" identifier . field_identifier) = (field_expression "(preupdate.pPk)->pNext" (parenthesized_expression "(preupdate.pPk)" ( (field_expression "preupdate.pPk" identifier . field_identifier) )) -> field_identifier)) ; (parenthesized_expression "(preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80))" ( (binary_expression "preupdate.pPk != (Index *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)" (binary_expression "preupdate.pPk != (Index *)0x0" (field_expression "preupdate.pPk" identifier . field_identifier) != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)" ( (binary_expression "((preupdate.pPk)->field_0x37 & 0xc0) != 0x80" (parenthesized_expression "((preupdate.pPk)->field_0x37 & 0xc0)" ( (binary_expression "(preupdate.pPk)->field_0x37 & 0xc0" (field_expression "(preupdate.pPk)->field_0x37" (parenthesized_expression "(preupdate.pPk)" ( (field_expression "preupdate.pPk" identifier . field_identifier) )) -> field_identifier) & number_literal) )) != number_literal) ))) )) ; (assignment_expression "preupdate.pPk = (preupdate.pPk)->pNext" (field_expression "preupdate.pPk" identifier . field_identifier) = (field_expression "(preupdate.pPk)->pNext" (parenthesized_expression "(preupdate.pPk)" ( (field_expression "preupdate.pPk" identifier . field_identifier) )) -> field_identifier)) ) (compound_statement "{\n      }" { })) })) (expression_statement "iKey1 = 0;" (assignment_expression "iKey1 = 0" identifier = number_literal) ;) (expression_statement "preupdate.iKey2 = 0;" (assignment_expression "preupdate.iKey2 = 0" (field_expression "preupdate.iKey2" identifier . field_identifier) = number_literal) ;) }))) (expression_statement "preupdate.keyinfo.nKeyField = pTab->nCol;" (assignment_expression "preupdate.keyinfo.nKeyField = pTab->nCol" (field_expression "preupdate.keyinfo.nKeyField" (field_expression "preupdate.keyinfo" identifier . field_identifier) . field_identifier) = (field_expression "pTab->nCol" identifier -> field_identifier)) ;) (expression_statement "preupdate.keyinfo.enc = db->enc;" (assignment_expression "preupdate.keyinfo.enc = db->enc" (field_expression "preupdate.keyinfo.enc" (field_expression "preupdate.keyinfo" identifier . field_identifier) . field_identifier) = (field_expression "db->enc" identifier -> field_identifier)) ;) (expression_statement "psVar4 = (sqlite3 *)db->pPreUpdateArg;" (assignment_expression "psVar4 = (sqlite3 *)db->pPreUpdateArg" identifier = (cast_expression "(sqlite3 *)db->pPreUpdateArg" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "db->pPreUpdateArg" identifier -> field_identifier))) ;) (expression_statement "db->pPreUpdate = pPVar3;" (assignment_expression "db->pPreUpdate = pPVar3" (field_expression "db->pPreUpdate" identifier -> field_identifier) = identifier) ;) (expression_statement "preupdate.keyinfo.aSortOrder = PTR_DAT_0015b5fc + 0x2abe;" (assignment_expression "preupdate.keyinfo.aSortOrder = PTR_DAT_0015b5fc + 0x2abe" (field_expression "preupdate.keyinfo.aSortOrder" (field_expression "preupdate.keyinfo" identifier . field_identifier) . field_identifier) = (binary_expression "PTR_DAT_0015b5fc + 0x2abe" identifier + number_literal)) ;) (expression_statement "preupdate.iNewReg = iReg;" (assignment_expression "preupdate.iNewReg = iReg" (field_expression "preupdate.iNewReg" identifier . field_identifier) = identifier) ;) (expression_statement "preupdate.pTab = pTab;" (assignment_expression "preupdate.pTab = pTab" (field_expression "preupdate.pTab" identifier . field_identifier) = identifier) ;) (expression_statement "preupdate.v = v;" (assignment_expression "preupdate.v = v" (field_expression "preupdate.v" identifier . field_identifier) = identifier) ;) (expression_statement "preupdate.pCsr = pCsr;" (assignment_expression "preupdate.pCsr = pCsr" (field_expression "preupdate.pCsr" identifier . field_identifier) = identifier) ;) (expression_statement "preupdate.op = op;" (assignment_expression "preupdate.op = op" (field_expression "preupdate.op" identifier . field_identifier) = identifier) ;) (expression_statement "preupdate.keyinfo.db = db;" (assignment_expression "preupdate.keyinfo.db = db" (field_expression "preupdate.keyinfo.db" (field_expression "preupdate.keyinfo" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "preupdate.iKey1 = iKey1;" (assignment_expression "preupdate.iKey1 = iKey1" (field_expression "preupdate.iKey1" identifier . field_identifier) = identifier) ;) (expression_statement "(*db->xPreUpdateCallback)(psVar4,db,op,zDb,pcVar6,iKey1,preupdate.iKey2);" (call_expression "(*db->xPreUpdateCallback)(psVar4,db,op,zDb,pcVar6,iKey1,preupdate.iKey2)" (parenthesized_expression "(*db->xPreUpdateCallback)" ( (pointer_expression "*db->xPreUpdateCallback" * (field_expression "db->xPreUpdateCallback" identifier -> field_identifier)) )) (argument_list "(psVar4,db,op,zDb,pcVar6,iKey1,preupdate.iKey2)" ( identifier , identifier , identifier , identifier , identifier , identifier , (field_expression "preupdate.iKey2" identifier . field_identifier) ))) ;) (expression_statement "db->pPreUpdate = (PreUpdate *)0x0;" (assignment_expression "db->pPreUpdate = (PreUpdate *)0x0" (field_expression "db->pPreUpdate" identifier -> field_identifier) = (cast_expression "(PreUpdate *)0x0" ( (type_descriptor "PreUpdate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (preupdate.aRecord != (u8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,preupdate.aRecord);\n  }" if (parenthesized_expression "(preupdate.aRecord != (u8 *)0x0)" ( (binary_expression "preupdate.aRecord != (u8 *)0x0" (field_expression "preupdate.aRecord" identifier . field_identifier) != (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,preupdate.aRecord);\n  }" { comment (expression_statement "sqlite3DbFreeNN(db,preupdate.aRecord);" (call_expression "sqlite3DbFreeNN(db,preupdate.aRecord)" identifier (argument_list "(db,preupdate.aRecord)" ( identifier , (field_expression "preupdate.aRecord" identifier . field_identifier) ))) ;) })) (expression_statement "iVar5 = preupdate.keyinfo.nKeyField + 1;" (assignment_expression "iVar5 = preupdate.keyinfo.nKeyField + 1" identifier = (binary_expression "preupdate.keyinfo.nKeyField + 1" (field_expression "preupdate.keyinfo.nKeyField" (field_expression "preupdate.keyinfo" identifier . field_identifier) . field_identifier) + number_literal)) ;) (if_statement "if (preupdate.pUnpacked != (UnpackedRecord *)0x0) {\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pUnpacked);\n    iVar5 = preupdate.keyinfo.nKeyField + 1;\n  }" if (parenthesized_expression "(preupdate.pUnpacked != (UnpackedRecord *)0x0)" ( (binary_expression "preupdate.pUnpacked != (UnpackedRecord *)0x0" (field_expression "preupdate.pUnpacked" identifier . field_identifier) != (cast_expression "(UnpackedRecord *)0x0" ( (type_descriptor "UnpackedRecord *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pUnpacked);\n    iVar5 = preupdate.keyinfo.nKeyField + 1;\n  }" { (expression_statement "psVar4 = db;" (assignment_expression "psVar4 = db" identifier = identifier) ;) (expression_statement "vdbeFreeUnpacked(db,iVar5,preupdate.pUnpacked);" (call_expression "vdbeFreeUnpacked(db,iVar5,preupdate.pUnpacked)" identifier (argument_list "(db,iVar5,preupdate.pUnpacked)" ( identifier , identifier , (field_expression "preupdate.pUnpacked" identifier . field_identifier) ))) ;) (expression_statement "iVar5 = preupdate.keyinfo.nKeyField + 1;" (assignment_expression "iVar5 = preupdate.keyinfo.nKeyField + 1" identifier = (binary_expression "preupdate.keyinfo.nKeyField + 1" (field_expression "preupdate.keyinfo.nKeyField" (field_expression "preupdate.keyinfo" identifier . field_identifier) . field_identifier) + number_literal)) ;) })) (if_statement "if (preupdate.pNewUnpacked != (UnpackedRecord *)0x0) {\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pNewUnpacked);\n  }" if (parenthesized_expression "(preupdate.pNewUnpacked != (UnpackedRecord *)0x0)" ( (binary_expression "preupdate.pNewUnpacked != (UnpackedRecord *)0x0" (field_expression "preupdate.pNewUnpacked" identifier . field_identifier) != (cast_expression "(UnpackedRecord *)0x0" ( (type_descriptor "UnpackedRecord *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    psVar4 = db;\n    vdbeFreeUnpacked(db,iVar5,preupdate.pNewUnpacked);\n  }" { (expression_statement "psVar4 = db;" (assignment_expression "psVar4 = db" identifier = identifier) ;) (expression_statement "vdbeFreeUnpacked(db,iVar5,preupdate.pNewUnpacked);" (call_expression "vdbeFreeUnpacked(db,iVar5,preupdate.pNewUnpacked)" identifier (argument_list "(db,iVar5,preupdate.pNewUnpacked)" ( identifier , identifier , (field_expression "preupdate.pNewUnpacked" identifier . field_identifier) ))) ;) })) (if_statement "if (preupdate.aNew != (Mem *)0x0) {\n    iVar2 = (int)pCsr->nField;\n    p_00 = preupdate.aNew;\n    if (0 < iVar2) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar2);\n    }\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,p_00);\n  }" if (parenthesized_expression "(preupdate.aNew != (Mem *)0x0)" ( (binary_expression "preupdate.aNew != (Mem *)0x0" (field_expression "preupdate.aNew" identifier . field_identifier) != (cast_expression "(Mem *)0x0" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = (int)pCsr->nField;\n    p_00 = preupdate.aNew;\n    if (0 < iVar2) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar2);\n    }\n                    /* WARNING: Subroutine does not return */\n    sqlite3DbFreeNN(db,p_00);\n  }" { (expression_statement "iVar2 = (int)pCsr->nField;" (assignment_expression "iVar2 = (int)pCsr->nField" identifier = (cast_expression "(int)pCsr->nField" ( (type_descriptor "int" primitive_type) ) (field_expression "pCsr->nField" identifier -> field_identifier))) ;) (expression_statement "p_00 = preupdate.aNew;" (assignment_expression "p_00 = preupdate.aNew" identifier = (field_expression "preupdate.aNew" identifier . field_identifier)) ;) (if_statement "if (0 < iVar2) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar2);\n    }" if (parenthesized_expression "(0 < iVar2)" ( (binary_expression "0 < iVar2" number_literal < identifier) )) (compound_statement "{\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar2);\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar2);" do (compound_statement "{\n        p = (Mem *)((int)&p_00->u + iVar7);\n        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      }" { (expression_statement "p = (Mem *)((int)&p_00->u + iVar7);" (assignment_expression "p = (Mem *)((int)&p_00->u + iVar7)" identifier = (cast_expression "(Mem *)((int)&p_00->u + iVar7)" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_00->u + iVar7)" ( (binary_expression "(int)&p_00->u + iVar7" (cast_expression "(int)&p_00->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_00->u" & (field_expression "p_00->u" identifier -> field_identifier))) + identifier) )))) ;) (if_statement "if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }" if (parenthesized_expression "(((p->flags & 0x2400) != 0) || (p->szMalloc != 0))" ( (binary_expression "((p->flags & 0x2400) != 0) || (p->szMalloc != 0)" (parenthesized_expression "((p->flags & 0x2400) != 0)" ( (binary_expression "(p->flags & 0x2400) != 0" (parenthesized_expression "(p->flags & 0x2400)" ( (binary_expression "p->flags & 0x2400" (field_expression "p->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(p->szMalloc != 0)" ( (binary_expression "p->szMalloc != 0" (field_expression "p->szMalloc" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n          vdbeMemClear(p);\n          iVar2 = (int)pCsr->nField;\n          p_00 = preupdate.aNew;\n        }" { (expression_statement "vdbeMemClear(p);" (call_expression "vdbeMemClear(p)" identifier (argument_list "(p)" ( identifier ))) ;) (expression_statement "iVar2 = (int)pCsr->nField;" (assignment_expression "iVar2 = (int)pCsr->nField" identifier = (cast_expression "(int)pCsr->nField" ( (type_descriptor "int" primitive_type) ) (field_expression "pCsr->nField" identifier -> field_identifier))) ;) (expression_statement "p_00 = preupdate.aNew;" (assignment_expression "p_00 = preupdate.aNew" identifier = (field_expression "preupdate.aNew" identifier . field_identifier)) ;) })) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar7 + 0x28;" (assignment_expression "iVar7 = iVar7 + 0x28" identifier = (binary_expression "iVar7 + 0x28" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 < iVar2)" ( (binary_expression "iVar5 < iVar2" identifier < identifier) )) ;) })) comment (expression_statement "sqlite3DbFreeNN(db,p_00);" (call_expression "sqlite3DbFreeNN(db,p_00)" identifier (argument_list "(db,p_00)" ( identifier , identifier ))) ;) })) (if_statement "if (iVar2 == *(int *)puVar1) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == *(int *)puVar1)" ( (binary_expression "iVar2 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (psVar4 == (sqlite3 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(psVar4 == (sqlite3 *)0x0)" ( (binary_expression "psVar4 == (sqlite3 *)0x0" identifier == (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "sqlite3_mutex_enter((sqlite3_mutex *)psVar4->pVfs->pNext);" (call_expression "sqlite3_mutex_enter((sqlite3_mutex *)psVar4->pVfs->pNext)" identifier (argument_list "((sqlite3_mutex *)psVar4->pVfs->pNext)" ( (cast_expression "(sqlite3_mutex *)psVar4->pVfs->pNext" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "psVar4->pVfs->pNext" (field_expression "psVar4->pVfs" identifier -> field_identifier) -> field_identifier)) ))) ;) })))
(translation_unit "int FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int *piVar8;\n  undefined *puVar9;\n  undefined4 *local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  undefined1 local_74;\n  ushort local_72;\n  int *local_6c;\n  undefined *local_68;\n  int local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined4 *local_3c;\n  int local_38;\n  int local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_0015ba2c;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  piVar8 = (int *)*param_1;\n  uVar6 = *param_5;\n  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);\n  if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }\n  local_72 = *(ushort *)((int)param_5 + 0x2a);\n  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);\n  piVar3 = (int *)piVar8[0x3b];\n  piVar8[0x3d] = iVar1;\n  local_68 = PTR_UINT_0015b5fc + 0x2abe;\n  local_58 = param_9;\n  local_3c = param_5;\n  local_88 = param_1;\n  local_84 = param_2;\n  local_80 = param_3;\n  local_6c = piVar8;\n  local_50 = param_7;\n  local_4c = param_8;\n  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);\n  piVar8[0x3d] = 0;\n  if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }\n  iVar1 = local_72 + 1;\n  if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }\n  if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }\n  uVar4 = local_40;\n  if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }\n  if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));\n  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }\n  iVar1 = *piVar3;\n  *(undefined4 *)(iVar1 + 0x40) = 0x19;\n  FUN_0002ecc0(iVar1,0x19);\n  return *(int *)(puVar9 + 0x125414) + 0x2a80;\n}\n\n" (function_definition "int FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int *piVar8;\n  undefined *puVar9;\n  undefined4 *local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  undefined1 local_74;\n  ushort local_72;\n  int *local_6c;\n  undefined *local_68;\n  int local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined4 *local_3c;\n  int local_38;\n  int local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_0015ba2c;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  piVar8 = (int *)*param_1;\n  uVar6 = *param_5;\n  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);\n  if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }\n  local_72 = *(ushort *)((int)param_5 + 0x2a);\n  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);\n  piVar3 = (int *)piVar8[0x3b];\n  piVar8[0x3d] = iVar1;\n  local_68 = PTR_UINT_0015b5fc + 0x2abe;\n  local_58 = param_9;\n  local_3c = param_5;\n  local_88 = param_1;\n  local_84 = param_2;\n  local_80 = param_3;\n  local_6c = piVar8;\n  local_50 = param_7;\n  local_4c = param_8;\n  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);\n  piVar8[0x3d] = 0;\n  if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }\n  iVar1 = local_72 + 1;\n  if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }\n  if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }\n  uVar4 = local_40;\n  if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }\n  if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));\n  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }\n  iVar1 = *piVar3;\n  *(undefined4 *)(iVar1 + 0x40) = 0x19;\n  FUN_0002ecc0(iVar1,0x19);\n  return *(int *)(puVar9 + 0x125414) + 0x2a80;\n}" primitive_type (function_declarator "FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "int param_9" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int *piVar8;\n  undefined *puVar9;\n  undefined4 *local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  undefined1 local_74;\n  ushort local_72;\n  int *local_6c;\n  undefined *local_68;\n  int local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined4 *local_3c;\n  int local_38;\n  int local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_0015ba2c;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  piVar8 = (int *)*param_1;\n  uVar6 = *param_5;\n  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);\n  if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }\n  local_72 = *(ushort *)((int)param_5 + 0x2a);\n  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);\n  piVar3 = (int *)piVar8[0x3b];\n  piVar8[0x3d] = iVar1;\n  local_68 = PTR_UINT_0015b5fc + 0x2abe;\n  local_58 = param_9;\n  local_3c = param_5;\n  local_88 = param_1;\n  local_84 = param_2;\n  local_80 = param_3;\n  local_6c = piVar8;\n  local_50 = param_7;\n  local_4c = param_8;\n  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);\n  piVar8[0x3d] = 0;\n  if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }\n  iVar1 = local_72 + 1;\n  if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }\n  if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }\n  uVar4 = local_40;\n  if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }\n  if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));\n  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }\n  iVar1 = *piVar3;\n  *(undefined4 *)(iVar1 + 0x40) = 0x19;\n  FUN_0002ecc0(iVar1,0x19);\n  return *(int *)(puVar9 + 0x125414) + 0x2a80;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "undefined1 local_74;" type_identifier identifier ;) (declaration "ushort local_72;" type_identifier identifier ;) (declaration "int *local_6c;" primitive_type (pointer_declarator "*local_6c" * identifier) ;) (declaration "undefined *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined4 *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar9 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar9 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar8 = (int *)*param_1;" (assignment_expression "piVar8 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar6 = *param_5;" (assignment_expression "uVar6 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);" (assignment_expression "iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58)" identifier = (call_expression "(*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58)" (parenthesized_expression "(*(code *)PTR_memset_0015b9b4)" ( (pointer_expression "*(code *)PTR_memset_0015b9b4" * (cast_expression "(code *)PTR_memset_0015b9b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_88,0,0x58)" ( (pointer_expression "&local_88" & identifier) , number_literal , number_literal )))) ;) (if_statement "if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" if (parenthesized_expression "((param_5[9] & 0x20) == 0)" ( (binary_expression "(param_5[9] & 0x20) == 0" (parenthesized_expression "(param_5[9] & 0x20)" ( (binary_expression "param_5[9] & 0x20" (subscript_expression "param_5[9]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }" { (expression_statement "local_44 = param_8;" (assignment_expression "local_44 = param_8" identifier = identifier) ;) (expression_statement "local_48 = param_7;" (assignment_expression "local_48 = param_7" identifier = identifier) ;) (if_statement "if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }" if (parenthesized_expression "(param_3 == 0x17)" ( (binary_expression "param_3 == 0x17" identifier == number_literal) )) (compound_statement "{\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }" { (expression_statement "puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);" (assignment_expression "puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28)" identifier = (cast_expression "(undefined4 *)(param_1[0x16] + param_9 * 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x16] + param_9 * 0x28)" ( (binary_expression "param_1[0x16] + param_9 * 0x28" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) + (binary_expression "param_9 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "local_44 = puVar2[1];" (assignment_expression "local_44 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "local_48 = *puVar2;" (assignment_expression "local_48 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) })) }) (else_clause "else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" else (compound_statement "{\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" { (expression_statement "local_38 = param_5[2];" (assignment_expression "local_38 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) (if_statement "if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }" if (parenthesized_expression "((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80))" ( (binary_expression "(local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" (parenthesized_expression "(local_38 != 0)" ( (binary_expression "local_38 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" ( (binary_expression "(*(byte *)(local_38 + 0x37) & 0xc0) != 0x80" (parenthesized_expression "(*(byte *)(local_38 + 0x37) & 0xc0)" ( (binary_expression "*(byte *)(local_38 + 0x37) & 0xc0" (pointer_expression "*(byte *)(local_38 + 0x37)" * (cast_expression "(byte *)(local_38 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x37)" ( (binary_expression "local_38 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }" { (for_statement "for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }" for ( (assignment_expression "local_38 = *(int *)(local_38 + 0x14)" identifier = (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) ))))) ; (parenthesized_expression "(local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80))" ( (binary_expression "local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" (binary_expression "local_38 != 0" identifier != number_literal) && (parenthesized_expression "((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" ( (binary_expression "(*(byte *)(local_38 + 0x37) & 0xc0) != 0x80" (parenthesized_expression "(*(byte *)(local_38 + 0x37) & 0xc0)" ( (binary_expression "*(byte *)(local_38 + 0x37) & 0xc0" (pointer_expression "*(byte *)(local_38 + 0x37)" * (cast_expression "(byte *)(local_38 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x37)" ( (binary_expression "local_38 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) ; (assignment_expression "local_38 = *(int *)(local_38 + 0x14)" identifier = (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) ))))) ) (compound_statement "{\n      }" { })) })) (expression_statement "param_7 = 0;" (assignment_expression "param_7 = 0" identifier = number_literal) ;) (expression_statement "param_8 = 0;" (assignment_expression "param_8 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) }))) (expression_statement "local_72 = *(ushort *)((int)param_5 + 0x2a);" (assignment_expression "local_72 = *(ushort *)((int)param_5 + 0x2a)" identifier = (pointer_expression "*(ushort *)((int)param_5 + 0x2a)" * (cast_expression "(ushort *)((int)param_5 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x2a)" ( (binary_expression "(int)param_5 + 0x2a" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_74 = *(undefined1 *)((int)piVar8 + 0x4e);" (assignment_expression "local_74 = *(undefined1 *)((int)piVar8 + 0x4e)" identifier = (pointer_expression "*(undefined1 *)((int)piVar8 + 0x4e)" * (cast_expression "(undefined1 *)((int)piVar8 + 0x4e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + 0x4e)" ( (binary_expression "(int)piVar8 + 0x4e" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar3 = (int *)piVar8[0x3b];" (assignment_expression "piVar3 = (int *)piVar8[0x3b]" identifier = (cast_expression "(int *)piVar8[0x3b]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0x3b]" identifier [ number_literal ]))) ;) (expression_statement "piVar8[0x3d] = iVar1;" (assignment_expression "piVar8[0x3d] = iVar1" (subscript_expression "piVar8[0x3d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_68 = PTR_UINT_0015b5fc + 0x2abe;" (assignment_expression "local_68 = PTR_UINT_0015b5fc + 0x2abe" identifier = (binary_expression "PTR_UINT_0015b5fc + 0x2abe" identifier + number_literal)) ;) (expression_statement "local_58 = param_9;" (assignment_expression "local_58 = param_9" identifier = identifier) ;) (expression_statement "local_3c = param_5;" (assignment_expression "local_3c = param_5" identifier = identifier) ;) (expression_statement "local_88 = param_1;" (assignment_expression "local_88 = param_1" identifier = identifier) ;) (expression_statement "local_84 = param_2;" (assignment_expression "local_84 = param_2" identifier = identifier) ;) (expression_statement "local_80 = param_3;" (assignment_expression "local_80 = param_3" identifier = identifier) ;) (expression_statement "local_6c = piVar8;" (assignment_expression "local_6c = piVar8" identifier = identifier) ;) (expression_statement "local_50 = param_7;" (assignment_expression "local_50 = param_7" identifier = identifier) ;) (expression_statement "local_4c = param_8;" (assignment_expression "local_4c = param_8" identifier = identifier) ;) (expression_statement "(*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);" (call_expression "(*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6)" (parenthesized_expression "(*(code *)piVar8[0x3c])" ( (pointer_expression "*(code *)piVar8[0x3c]" * (cast_expression "(code *)piVar8[0x3c]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0x3c]" identifier [ number_literal ]))) )) (argument_list "(piVar3,piVar8,param_3,param_4,uVar6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "piVar8[0x3d] = 0;" (assignment_expression "piVar8[0x3d] = 0" (subscript_expression "piVar8[0x3d]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }" if (parenthesized_expression "(local_7c != 0)" ( (binary_expression "local_7c != 0" identifier != number_literal) )) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }" { (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" identifier = identifier) ;) (expression_statement "FUN_0002a924();" (call_expression "FUN_0002a924()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar1 = local_72 + 1;" (assignment_expression "iVar1 = local_72 + 1" identifier = (binary_expression "local_72 + 1" identifier + number_literal)) ;) (if_statement "if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }" if (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }" { (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" identifier = identifier) ;) (expression_statement "FUN_00035e50(piVar8,iVar1);" (call_expression "FUN_00035e50(piVar8,iVar1)" identifier (argument_list "(piVar8,iVar1)" ( identifier , identifier ))) ;) (expression_statement "iVar1 = local_72 + 1;" (assignment_expression "iVar1 = local_72 + 1" identifier = (binary_expression "local_72 + 1" identifier + number_literal)) ;) })) (if_statement "if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }" if (parenthesized_expression "(local_5c != 0)" ( (binary_expression "local_5c != 0" identifier != number_literal) )) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }" { (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" identifier = identifier) ;) (expression_statement "FUN_00035e50(piVar8,iVar1);" (call_expression "FUN_00035e50(piVar8,iVar1)" identifier (argument_list "(piVar8,iVar1)" ( identifier , identifier ))) ;) })) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" identifier = identifier) ;) (if_statement "if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }" { (expression_statement "iVar1 = (int)*(short *)(param_2 + 0x38);" (assignment_expression "iVar1 = (int)*(short *)(param_2 + 0x38)" identifier = (cast_expression "(int)*(short *)(param_2 + 0x38)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(param_2 + 0x38)" * (cast_expression "(short *)(param_2 + 0x38)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))))) ;) (if_statement "if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }" if (parenthesized_expression "(0 < iVar1)" ( (binary_expression "0 < iVar1" number_literal < identifier) )) (compound_statement "{\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);" do (compound_statement "{\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      }" { (if_statement "if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }" if (parenthesized_expression "(((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0))" ( (binary_expression "((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)" (parenthesized_expression "((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0)" ( (binary_expression "(*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(uVar4 + iVar7 + 8) & 0x2400)" ( (binary_expression "*(ushort *)(uVar4 + iVar7 + 8) & 0x2400" (pointer_expression "*(ushort *)(uVar4 + iVar7 + 8)" * (cast_expression "(ushort *)(uVar4 + iVar7 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + iVar7 + 8)" ( (binary_expression "uVar4 + iVar7 + 8" (binary_expression "uVar4 + iVar7" identifier + identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(*(int *)(uVar4 + iVar7 + 0x18) != 0)" ( (binary_expression "*(int *)(uVar4 + iVar7 + 0x18) != 0" (pointer_expression "*(int *)(uVar4 + iVar7 + 0x18)" * (cast_expression "(int *)(uVar4 + iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + iVar7 + 0x18)" ( (binary_expression "uVar4 + iVar7 + 0x18" (binary_expression "uVar4 + iVar7" identifier + identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }" { (expression_statement "FUN_0002aedc();" (call_expression "FUN_0002aedc()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = (int)*(short *)(param_2 + 0x38);" (assignment_expression "iVar1 = (int)*(short *)(param_2 + 0x38)" identifier = (cast_expression "(int)*(short *)(param_2 + 0x38)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(param_2 + 0x38)" * (cast_expression "(short *)(param_2 + 0x38)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" identifier = identifier) ;) })) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar7 + 0x28;" (assignment_expression "iVar7 = iVar7 + 0x28" identifier = (binary_expression "iVar7 + 0x28" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 < iVar1)" ( (binary_expression "iVar5 < iVar1" identifier < identifier) )) ;) })) (expression_statement "FUN_0002a924();" (call_expression "FUN_0002a924()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" identifier = identifier) ;) })) (if_statement "if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar9)" ( (binary_expression "local_2c == *(int *)puVar9" identifier == (pointer_expression "*(int *)puVar9" * (cast_expression "(int *)puVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar9;\n  }" { (return_statement "return *(int *)puVar9;" return (pointer_expression "*(int *)puVar9" * (cast_expression "(int *)puVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar9 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar9 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }" { (return_statement "return *(int *)(puVar9 + 0x125414) + 0x2a80;" return (binary_expression "*(int *)(puVar9 + 0x125414) + 0x2a80" (pointer_expression "*(int *)(puVar9 + 0x125414)" * (cast_expression "(int *)(puVar9 + 0x125414)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x125414)" ( (binary_expression "puVar9 + 0x125414" identifier + number_literal) )))) + number_literal) ;) })) (expression_statement "sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));" (call_expression "sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc))" identifier (argument_list "(*(undefined4 *)(*piVar3 + 0xc))" ( (pointer_expression "*(undefined4 *)(*piVar3 + 0xc)" * (cast_expression "(undefined4 *)(*piVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + 0xc)" ( (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" * identifier) + number_literal) )))) ))) ;) (if_statement "if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }" if (parenthesized_expression "((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24)))" ( (binary_expression "(piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))" (parenthesized_expression "(piVar3[0x1e] != 0)" ( (binary_expression "piVar3[0x1e] != 0" (subscript_expression "piVar3[0x1e]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(uVar4 < *(ushort *)(piVar3 + 0x24))" ( (binary_expression "uVar4 < *(ushort *)(piVar3 + 0x24)" identifier < (pointer_expression "*(ushort *)(piVar3 + 0x24)" * (cast_expression "(ushort *)(piVar3 + 0x24)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 0x24)" ( (binary_expression "piVar3 + 0x24" identifier + number_literal) ))))) ))) )) (compound_statement "{\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }" { (return_statement "return piVar3[0x1e] + uVar4 * 0x28;" return (binary_expression "piVar3[0x1e] + uVar4 * 0x28" (subscript_expression "piVar3[0x1e]" identifier [ number_literal ]) + (binary_expression "uVar4 * 0x28" identifier * number_literal)) ;) })) (expression_statement "iVar1 = *piVar3;" (assignment_expression "iVar1 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar1 + 0x40) = 0x19;" (assignment_expression "*(undefined4 *)(iVar1 + 0x40) = 0x19" (pointer_expression "*(undefined4 *)(iVar1 + 0x40)" * (cast_expression "(undefined4 *)(iVar1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0002ecc0(iVar1,0x19);" (call_expression "FUN_0002ecc0(iVar1,0x19)" identifier (argument_list "(iVar1,0x19)" ( identifier , number_literal ))) ;) (return_statement "return *(int *)(puVar9 + 0x125414) + 0x2a80;" return (binary_expression "*(int *)(puVar9 + 0x125414) + 0x2a80" (pointer_expression "*(int *)(puVar9 + 0x125414)" * (cast_expression "(int *)(puVar9 + 0x125414)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x125414)" ( (binary_expression "puVar9 + 0x125414" identifier + number_literal) )))) + number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (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) )) != LIT) ))) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (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) )) != LIT) ))) )) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (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 (binary_expression IDENT + IDENT) + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (return_statement return (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ;) })))
(function_definition "int FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int *piVar8;\n  undefined *puVar9;\n  undefined4 *local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  undefined1 local_74;\n  ushort local_72;\n  int *local_6c;\n  undefined *local_68;\n  int local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined4 *local_3c;\n  int local_38;\n  int local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_0015ba2c;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  piVar8 = (int *)*param_1;\n  uVar6 = *param_5;\n  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);\n  if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }\n  local_72 = *(ushort *)((int)param_5 + 0x2a);\n  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);\n  piVar3 = (int *)piVar8[0x3b];\n  piVar8[0x3d] = iVar1;\n  local_68 = PTR_UINT_0015b5fc + 0x2abe;\n  local_58 = param_9;\n  local_3c = param_5;\n  local_88 = param_1;\n  local_84 = param_2;\n  local_80 = param_3;\n  local_6c = piVar8;\n  local_50 = param_7;\n  local_4c = param_8;\n  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);\n  piVar8[0x3d] = 0;\n  if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }\n  iVar1 = local_72 + 1;\n  if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }\n  if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }\n  uVar4 = local_40;\n  if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }\n  if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));\n  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }\n  iVar1 = *piVar3;\n  *(undefined4 *)(iVar1 + 0x40) = 0x19;\n  FUN_0002ecc0(iVar1,0x19);\n  return *(int *)(puVar9 + 0x125414) + 0x2a80;\n}" (primitive_type "int") (function_declarator "FUN_00035f10(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)" (identifier "FUN_00035f10") (parameter_list "(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (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")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 *param_5" (type_identifier "undefined4") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int *piVar8;\n  undefined *puVar9;\n  undefined4 *local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  undefined1 local_74;\n  ushort local_72;\n  int *local_6c;\n  undefined *local_68;\n  int local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined4 *local_3c;\n  int local_38;\n  int local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_0015ba2c;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  piVar8 = (int *)*param_1;\n  uVar6 = *param_5;\n  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);\n  if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }\n  local_72 = *(ushort *)((int)param_5 + 0x2a);\n  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);\n  piVar3 = (int *)piVar8[0x3b];\n  piVar8[0x3d] = iVar1;\n  local_68 = PTR_UINT_0015b5fc + 0x2abe;\n  local_58 = param_9;\n  local_3c = param_5;\n  local_88 = param_1;\n  local_84 = param_2;\n  local_80 = param_3;\n  local_6c = piVar8;\n  local_50 = param_7;\n  local_4c = param_8;\n  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);\n  piVar8[0x3d] = 0;\n  if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }\n  iVar1 = local_72 + 1;\n  if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }\n  if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }\n  uVar4 = local_40;\n  if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }\n  if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));\n  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }\n  iVar1 = *piVar3;\n  *(undefined4 *)(iVar1 + 0x40) = 0x19;\n  FUN_0002ecc0(iVar1,0x19);\n  return *(int *)(puVar9 + 0x125414) + 0x2a80;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 *local_88;" (type_identifier "undefined4") (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "int local_80;" (primitive_type "int") (identifier "local_80") (; ";")) (declaration "int local_7c;" (primitive_type "int") (identifier "local_7c") (; ";")) (declaration "undefined1 local_74;" (type_identifier "undefined1") (identifier "local_74") (; ";")) (declaration "ushort local_72;" (type_identifier "ushort") (identifier "local_72") (; ";")) (declaration "int *local_6c;" (primitive_type "int") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "undefined *local_68;" (type_identifier "undefined") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "undefined4 *local_3c;" (type_identifier "undefined4") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar9 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar9 = PTR___stack_chk_guard_0015ba2c" (identifier "puVar9") (= "=") (identifier "PTR___stack_chk_guard_0015ba2c")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0015ba2c")))) (; ";")) (expression_statement "piVar8 = (int *)*param_1;" (assignment_expression "piVar8 = (int *)*param_1" (identifier "piVar8") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar6 = *param_5;" (assignment_expression "uVar6 = *param_5" (identifier "uVar6") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);" (assignment_expression "iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58)" (parenthesized_expression "(*(code *)PTR_memset_0015b9b4)" (( "(") (pointer_expression "*(code *)PTR_memset_0015b9b4" (* "*") (cast_expression "(code *)PTR_memset_0015b9b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memset_0015b9b4"))) () ")")) (argument_list "(&local_88,0,0x58)" (( "(") (pointer_expression "&local_88" (& "&") (identifier "local_88")) (, ",") (number_literal "0") (, ",") (number_literal "0x58") () ")")))) (; ";")) (if_statement "if ((param_5[9] & 0x20) == 0) {\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }\n  else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" (if "if") (parenthesized_expression "((param_5[9] & 0x20) == 0)" (( "(") (binary_expression "(param_5[9] & 0x20) == 0" (parenthesized_expression "(param_5[9] & 0x20)" (( "(") (binary_expression "param_5[9] & 0x20" (subscript_expression "param_5[9]" (identifier "param_5") ([ "[") (number_literal "9") (] "]")) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_44 = param_8;\n    local_48 = param_7;\n    if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }\n  }" ({ "{") (expression_statement "local_44 = param_8;" (assignment_expression "local_44 = param_8" (identifier "local_44") (= "=") (identifier "param_8")) (; ";")) (expression_statement "local_48 = param_7;" (assignment_expression "local_48 = param_7" (identifier "local_48") (= "=") (identifier "param_7")) (; ";")) (if_statement "if (param_3 == 0x17) {\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }" (if "if") (parenthesized_expression "(param_3 == 0x17)" (( "(") (binary_expression "param_3 == 0x17" (identifier "param_3") (== "==") (number_literal "0x17")) () ")")) (compound_statement "{\n      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);\n      local_44 = puVar2[1];\n      local_48 = *puVar2;\n    }" ({ "{") (expression_statement "puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);" (assignment_expression "puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(param_1[0x16] + param_9 * 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[0x16] + param_9 * 0x28)" (( "(") (binary_expression "param_1[0x16] + param_9 * 0x28" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (+ "+") (binary_expression "param_9 * 0x28" (identifier "param_9") (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (expression_statement "local_44 = puVar2[1];" (assignment_expression "local_44 = puVar2[1]" (identifier "local_44") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_48 = *puVar2;" (assignment_expression "local_48 = *puVar2" (identifier "local_48") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" (else "else") (compound_statement "{\n    local_38 = param_5[2];\n    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }\n    param_7 = 0;\n    param_8 = 0;\n    local_44 = 0;\n    local_48 = 0;\n  }" ({ "{") (expression_statement "local_38 = param_5[2];" (assignment_expression "local_38 = param_5[2]" (identifier "local_38") (= "=") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }" (if "if") (parenthesized_expression "((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80))" (( "(") (binary_expression "(local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" (parenthesized_expression "(local_38 != 0)" (( "(") (binary_expression "local_38 != 0" (identifier "local_38") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" (( "(") (binary_expression "(*(byte *)(local_38 + 0x37) & 0xc0) != 0x80" (parenthesized_expression "(*(byte *)(local_38 + 0x37) & 0xc0)" (( "(") (binary_expression "*(byte *)(local_38 + 0x37) & 0xc0" (pointer_expression "*(byte *)(local_38 + 0x37)" (* "*") (cast_expression "(byte *)(local_38 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x37)" (( "(") (binary_expression "local_38 + 0x37" (identifier "local_38") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "0xc0")) () ")")) (!= "!=") (number_literal "0x80")) () ")"))) () ")")) (compound_statement "{\n      for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }\n    }" ({ "{") (for_statement "for (local_38 = *(int *)(local_38 + 0x14);\n          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));\n          local_38 = *(int *)(local_38 + 0x14)) {\n      }" (for "for") (( "(") (assignment_expression "local_38 = *(int *)(local_38 + 0x14)" (identifier "local_38") (= "=") (pointer_expression "*(int *)(local_38 + 0x14)" (* "*") (cast_expression "(int *)(local_38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x14)" (( "(") (binary_expression "local_38 + 0x14" (identifier "local_38") (+ "+") (number_literal "0x14")) () ")"))))) (; ";") (parenthesized_expression "(local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80))" (( "(") (binary_expression "local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" (binary_expression "local_38 != 0" (identifier "local_38") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)" (( "(") (binary_expression "(*(byte *)(local_38 + 0x37) & 0xc0) != 0x80" (parenthesized_expression "(*(byte *)(local_38 + 0x37) & 0xc0)" (( "(") (binary_expression "*(byte *)(local_38 + 0x37) & 0xc0" (pointer_expression "*(byte *)(local_38 + 0x37)" (* "*") (cast_expression "(byte *)(local_38 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x37)" (( "(") (binary_expression "local_38 + 0x37" (identifier "local_38") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "0xc0")) () ")")) (!= "!=") (number_literal "0x80")) () ")"))) () ")")) (; ";") (assignment_expression "local_38 = *(int *)(local_38 + 0x14)" (identifier "local_38") (= "=") (pointer_expression "*(int *)(local_38 + 0x14)" (* "*") (cast_expression "(int *)(local_38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x14)" (( "(") (binary_expression "local_38 + 0x14" (identifier "local_38") (+ "+") (number_literal "0x14")) () ")"))))) () ")") (compound_statement "{\n      }" ({ "{") (} "}"))) (} "}"))) (expression_statement "param_7 = 0;" (assignment_expression "param_7 = 0" (identifier "param_7") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_8 = 0;" (assignment_expression "param_8 = 0" (identifier "param_8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "local_72 = *(ushort *)((int)param_5 + 0x2a);" (assignment_expression "local_72 = *(ushort *)((int)param_5 + 0x2a)" (identifier "local_72") (= "=") (pointer_expression "*(ushort *)((int)param_5 + 0x2a)" (* "*") (cast_expression "(ushort *)((int)param_5 + 0x2a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x2a)" (( "(") (binary_expression "(int)param_5 + 0x2a" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (expression_statement "local_74 = *(undefined1 *)((int)piVar8 + 0x4e);" (assignment_expression "local_74 = *(undefined1 *)((int)piVar8 + 0x4e)" (identifier "local_74") (= "=") (pointer_expression "*(undefined1 *)((int)piVar8 + 0x4e)" (* "*") (cast_expression "(undefined1 *)((int)piVar8 + 0x4e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + 0x4e)" (( "(") (binary_expression "(int)piVar8 + 0x4e" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "0x4e")) () ")"))))) (; ";")) (expression_statement "piVar3 = (int *)piVar8[0x3b];" (assignment_expression "piVar3 = (int *)piVar8[0x3b]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar8[0x3b]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[0x3b]" (identifier "piVar8") ([ "[") (number_literal "0x3b") (] "]")))) (; ";")) (expression_statement "piVar8[0x3d] = iVar1;" (assignment_expression "piVar8[0x3d] = iVar1" (subscript_expression "piVar8[0x3d]" (identifier "piVar8") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "local_68 = PTR_UINT_0015b5fc + 0x2abe;" (assignment_expression "local_68 = PTR_UINT_0015b5fc + 0x2abe" (identifier "local_68") (= "=") (binary_expression "PTR_UINT_0015b5fc + 0x2abe" (identifier "PTR_UINT_0015b5fc") (+ "+") (number_literal "0x2abe"))) (; ";")) (expression_statement "local_58 = param_9;" (assignment_expression "local_58 = param_9" (identifier "local_58") (= "=") (identifier "param_9")) (; ";")) (expression_statement "local_3c = param_5;" (assignment_expression "local_3c = param_5" (identifier "local_3c") (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_88 = param_1;" (assignment_expression "local_88 = param_1" (identifier "local_88") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_84 = param_2;" (assignment_expression "local_84 = param_2" (identifier "local_84") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_80 = param_3;" (assignment_expression "local_80 = param_3" (identifier "local_80") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_6c = piVar8;" (assignment_expression "local_6c = piVar8" (identifier "local_6c") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "local_50 = param_7;" (assignment_expression "local_50 = param_7" (identifier "local_50") (= "=") (identifier "param_7")) (; ";")) (expression_statement "local_4c = param_8;" (assignment_expression "local_4c = param_8" (identifier "local_4c") (= "=") (identifier "param_8")) (; ";")) (expression_statement "(*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);" (call_expression "(*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6)" (parenthesized_expression "(*(code *)piVar8[0x3c])" (( "(") (pointer_expression "*(code *)piVar8[0x3c]" (* "*") (cast_expression "(code *)piVar8[0x3c]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[0x3c]" (identifier "piVar8") ([ "[") (number_literal "0x3c") (] "]")))) () ")")) (argument_list "(piVar3,piVar8,param_3,param_4,uVar6)" (( "(") (identifier "piVar3") (, ",") (identifier "piVar8") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "piVar8[0x3d] = 0;" (assignment_expression "piVar8[0x3d] = 0" (subscript_expression "piVar8[0x3d]" (identifier "piVar8") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_7c != 0) {\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }" (if "if") (parenthesized_expression "(local_7c != 0)" (( "(") (binary_expression "local_7c != 0" (identifier "local_7c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_0002a924();\n  }" ({ "{") (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" (identifier "piVar3") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "FUN_0002a924();" (call_expression "FUN_0002a924()" (identifier "FUN_0002a924") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = local_72 + 1;" (assignment_expression "iVar1 = local_72 + 1" (identifier "iVar1") (= "=") (binary_expression "local_72 + 1" (identifier "local_72") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_60 != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }" (if "if") (parenthesized_expression "(local_60 != 0)" (( "(") (binary_expression "local_60 != 0" (identifier "local_60") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n    iVar1 = local_72 + 1;\n  }" ({ "{") (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" (identifier "piVar3") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "FUN_00035e50(piVar8,iVar1);" (call_expression "FUN_00035e50(piVar8,iVar1)" (identifier "FUN_00035e50") (argument_list "(piVar8,iVar1)" (( "(") (identifier "piVar8") (, ",") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "iVar1 = local_72 + 1;" (assignment_expression "iVar1 = local_72 + 1" (identifier "iVar1") (= "=") (binary_expression "local_72 + 1" (identifier "local_72") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (local_5c != 0) {\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }" (if "if") (parenthesized_expression "(local_5c != 0)" (( "(") (binary_expression "local_5c != 0" (identifier "local_5c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar3 = piVar8;\n    FUN_00035e50(piVar8,iVar1);\n  }" ({ "{") (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" (identifier "piVar3") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "FUN_00035e50(piVar8,iVar1);" (call_expression "FUN_00035e50(piVar8,iVar1)" (identifier "FUN_00035e50") (argument_list "(piVar8,iVar1)" (( "(") (identifier "piVar8") (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" (identifier "uVar4") (= "=") (identifier "local_40")) (; ";")) (if_statement "if (local_40 != 0) {\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = (int)*(short *)(param_2 + 0x38);\n    if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }\n    FUN_0002a924();\n    piVar3 = piVar8;\n  }" ({ "{") (expression_statement "iVar1 = (int)*(short *)(param_2 + 0x38);" (assignment_expression "iVar1 = (int)*(short *)(param_2 + 0x38)" (identifier "iVar1") (= "=") (cast_expression "(int)*(short *)(param_2 + 0x38)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(param_2 + 0x38)" (* "*") (cast_expression "(short *)(param_2 + 0x38)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))))) (; ";")) (if_statement "if (0 < iVar1) {\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }" (if "if") (parenthesized_expression "(0 < iVar1)" (( "(") (binary_expression "0 < iVar1" (number_literal "0") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n      iVar7 = 0;\n      iVar5 = 0;\n      do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);\n    }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      } while (iVar5 < iVar1);" (do "do") (compound_statement "{\n        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }\n        iVar5 = iVar5 + 1;\n        iVar7 = iVar7 + 0x28;\n      }" ({ "{") (if_statement "if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }" (if "if") (parenthesized_expression "(((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0))" (( "(") (binary_expression "((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||\n           (*(int *)(uVar4 + iVar7 + 0x18) != 0)" (parenthesized_expression "((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0)" (( "(") (binary_expression "(*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(uVar4 + iVar7 + 8) & 0x2400)" (( "(") (binary_expression "*(ushort *)(uVar4 + iVar7 + 8) & 0x2400" (pointer_expression "*(ushort *)(uVar4 + iVar7 + 8)" (* "*") (cast_expression "(ushort *)(uVar4 + iVar7 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + iVar7 + 8)" (( "(") (binary_expression "uVar4 + iVar7 + 8" (binary_expression "uVar4 + iVar7" (identifier "uVar4") (+ "+") (identifier "iVar7")) (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x2400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(uVar4 + iVar7 + 0x18) != 0)" (( "(") (binary_expression "*(int *)(uVar4 + iVar7 + 0x18) != 0" (pointer_expression "*(int *)(uVar4 + iVar7 + 0x18)" (* "*") (cast_expression "(int *)(uVar4 + iVar7 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + iVar7 + 0x18)" (( "(") (binary_expression "uVar4 + iVar7 + 0x18" (binary_expression "uVar4 + iVar7" (identifier "uVar4") (+ "+") (identifier "iVar7")) (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          FUN_0002aedc();\n          iVar1 = (int)*(short *)(param_2 + 0x38);\n          uVar4 = local_40;\n        }" ({ "{") (expression_statement "FUN_0002aedc();" (call_expression "FUN_0002aedc()" (identifier "FUN_0002aedc") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar1 = (int)*(short *)(param_2 + 0x38);" (assignment_expression "iVar1 = (int)*(short *)(param_2 + 0x38)" (identifier "iVar1") (= "=") (cast_expression "(int)*(short *)(param_2 + 0x38)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(param_2 + 0x38)" (* "*") (cast_expression "(short *)(param_2 + 0x38)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))))) (; ";")) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" (identifier "uVar4") (= "=") (identifier "local_40")) (; ";")) (} "}"))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar7 = iVar7 + 0x28;" (assignment_expression "iVar7 = iVar7 + 0x28" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 0x28" (identifier "iVar7") (+ "+") (number_literal "0x28"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 < iVar1)" (( "(") (binary_expression "iVar5 < iVar1" (identifier "iVar5") (< "<") (identifier "iVar1")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_0002a924();" (call_expression "FUN_0002a924()" (identifier "FUN_0002a924") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar3 = piVar8;" (assignment_expression "piVar3 = piVar8" (identifier "piVar3") (= "=") (identifier "piVar8")) (; ";")) (} "}"))) (if_statement "if (local_2c == *(int *)puVar9) {\n    return *(int *)puVar9;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar9)" (( "(") (binary_expression "local_2c == *(int *)puVar9" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar9" (* "*") (cast_expression "(int *)puVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9")))) () ")")) (compound_statement "{\n    return *(int *)puVar9;\n  }" ({ "{") (return_statement "return *(int *)puVar9;" (return "return") (pointer_expression "*(int *)puVar9" (* "*") (cast_expression "(int *)puVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (; ";")) (} "}"))) (expression_statement "puVar9 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar9 = PTR___stack_chk_fail_0015ba10" (identifier "puVar9") (= "=") (identifier "PTR___stack_chk_fail_0015ba10")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0015ba10"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (piVar3 == (int *)0x0) {\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }" (if "if") (parenthesized_expression "(piVar3 == (int *)0x0)" (( "(") (binary_expression "piVar3 == (int *)0x0" (identifier "piVar3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return *(int *)(puVar9 + 0x125414) + 0x2a80;\n  }" ({ "{") (return_statement "return *(int *)(puVar9 + 0x125414) + 0x2a80;" (return "return") (binary_expression "*(int *)(puVar9 + 0x125414) + 0x2a80" (pointer_expression "*(int *)(puVar9 + 0x125414)" (* "*") (cast_expression "(int *)(puVar9 + 0x125414)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x125414)" (( "(") (binary_expression "puVar9 + 0x125414" (identifier "puVar9") (+ "+") (number_literal "0x125414")) () ")")))) (+ "+") (number_literal "0x2a80")) (; ";")) (} "}"))) (expression_statement "sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));" (call_expression "sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc))" (identifier "sqlite3_mutex_enter") (argument_list "(*(undefined4 *)(*piVar3 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(*piVar3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(*piVar3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar3 + 0xc)" (( "(") (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (if_statement "if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }" (if "if") (parenthesized_expression "((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24)))" (( "(") (binary_expression "(piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))" (parenthesized_expression "(piVar3[0x1e] != 0)" (( "(") (binary_expression "piVar3[0x1e] != 0" (subscript_expression "piVar3[0x1e]" (identifier "piVar3") ([ "[") (number_literal "0x1e") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 < *(ushort *)(piVar3 + 0x24))" (( "(") (binary_expression "uVar4 < *(ushort *)(piVar3 + 0x24)" (identifier "uVar4") (< "<") (pointer_expression "*(ushort *)(piVar3 + 0x24)" (* "*") (cast_expression "(ushort *)(piVar3 + 0x24)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 0x24)" (( "(") (binary_expression "piVar3 + 0x24" (identifier "piVar3") (+ "+") (number_literal "0x24")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n    return piVar3[0x1e] + uVar4 * 0x28;\n  }" ({ "{") (return_statement "return piVar3[0x1e] + uVar4 * 0x28;" (return "return") (binary_expression "piVar3[0x1e] + uVar4 * 0x28" (subscript_expression "piVar3[0x1e]" (identifier "piVar3") ([ "[") (number_literal "0x1e") (] "]")) (+ "+") (binary_expression "uVar4 * 0x28" (identifier "uVar4") (* "*") (number_literal "0x28"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *piVar3;" (assignment_expression "iVar1 = *piVar3" (identifier "iVar1") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0x40) = 0x19;" (assignment_expression "*(undefined4 *)(iVar1 + 0x40) = 0x19" (pointer_expression "*(undefined4 *)(iVar1 + 0x40)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x40)" (( "(") (binary_expression "iVar1 + 0x40" (identifier "iVar1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (number_literal "0x19")) (; ";")) (expression_statement "FUN_0002ecc0(iVar1,0x19);" (call_expression "FUN_0002ecc0(iVar1,0x19)" (identifier "FUN_0002ecc0") (argument_list "(iVar1,0x19)" (( "(") (identifier "iVar1") (, ",") (number_literal "0x19") () ")"))) (; ";")) (return_statement "return *(int *)(puVar9 + 0x125414) + 0x2a80;" (return "return") (binary_expression "*(int *)(puVar9 + 0x125414) + 0x2a80" (pointer_expression "*(int *)(puVar9 + 0x125414)" (* "*") (cast_expression "(int *)(puVar9 + 0x125414)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x125414)" (( "(") (binary_expression "puVar9 + 0x125414" (identifier "puVar9") (+ "+") (number_literal "0x125414")) () ")")))) (+ "+") (number_literal "0x2a80")) (; ";")) (} "}")))

void function_1
               (type_1 *v,type_2 *pCsr,int var_1,char *zDb,type_3 *pTab,type_4 iKey1,int iReg)

{
  type_5 *puVar1;
  int var_5;
  type_6 *pPVar3;
  type_7 *var_9;
  type_8 *p;
  int var_8;
  type_8 *p_00;
  char *pcVar6;
  int var_6;
  type_7 *db;
  type_6 preupdate;
  
  puVar1 = PTR___stack_chk_guard_0015ba2c;
  var_5 = *(int *)PTR___stack_chk_guard_0015ba2c;
  db = v->db;
  pcVar6 = pTab->zName;
  pPVar3 = (type_6 *)(*(type_9 *)PTR_memset_0015b9b4)(&preupdate,0,0x58);
  if ((pTab->tabFlags & 0x20) == 0) {
    preupdate.iKey2 = iKey1;
    if (var_1 == 0x17) {
      preupdate.iKey2 = v->aMem[iReg].u.i;
    }
  }
  else {
    preupdate.pPk = pTab->pIndex;
    if ((preupdate.pPk != (type_10 *)0x0) && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80)) {
      for (preupdate.pPk = (preupdate.pPk)->pNext;
          (preupdate.pPk != (type_10 *)0x0 && (((preupdate.pPk)->field_0x37 & 0xc0) != 0x80));
          preupdate.pPk = (preupdate.pPk)->pNext) {
      }
    }
    iKey1 = 0;
    preupdate.iKey2 = 0;
  }
  preupdate.keyinfo.nKeyField = pTab->nCol;
  preupdate.keyinfo.enc = db->enc;
  var_9 = (type_7 *)db->pPreUpdateArg;
  db->pPreUpdate = pPVar3;
  preupdate.keyinfo.aSortOrder = var_2 + 0x2abe;
  preupdate.iNewReg = iReg;
  preupdate.pTab = pTab;
  preupdate.v = v;
  preupdate.pCsr = pCsr;
  preupdate.var_1 = var_1;
  preupdate.keyinfo.db = db;
  preupdate.iKey1 = iKey1;
  (*db->xPreUpdateCallback)(var_9,db,var_1,zDb,pcVar6,iKey1,preupdate.iKey2);
  db->pPreUpdate = (type_6 *)0x0;
  if (preupdate.aRecord != (type_11 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3(db,preupdate.aRecord);
  }
  var_8 = preupdate.keyinfo.nKeyField + 1;
  if (preupdate.pUnpacked != (type_12 *)0x0) {
    var_9 = db;
    var_4(db,var_8,preupdate.pUnpacked);
    var_8 = preupdate.keyinfo.nKeyField + 1;
  }
  if (preupdate.pNewUnpacked != (type_12 *)0x0) {
    var_9 = db;
    var_4(db,var_8,preupdate.pNewUnpacked);
  }
  if (preupdate.aNew != (type_8 *)0x0) {
    var_5 = (int)pCsr->nField;
    p_00 = preupdate.aNew;
    if (0 < var_5) {
      var_6 = 0;
      var_8 = 0;
      do {
        p = (type_8 *)((int)&p_00->u + var_6);
        if (((p->flags & 0x2400) != 0) || (p->szMalloc != 0)) {
          var_7(p);
          var_5 = (int)pCsr->nField;
          p_00 = preupdate.aNew;
        }
        var_8 = var_8 + 1;
        var_6 = var_6 + 0x28;
      } while (var_8 < var_5);
    }
                    /* WARNING: Subroutine does not return */
    var_3(db,p_00);
  }
  if (var_5 == *(int *)puVar1) {
    return;
  }
  (*(type_9 *)PTR___stack_chk_fail_0015ba10)();
  if (var_9 == (type_7 *)0x0) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_10((type_13 *)var_9->pVfs->pNext);
}


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

int MASKED(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5,
                undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  int *piVar8;
  undefined *puVar9;
  undefined4 *local_88;
  int local_84;
  int local_80;
  int local_7c;
  undefined1 local_74;
  ushort local_72;
  int *local_6c;
  undefined *local_68;
  int local_60;
  int local_5c;
  int local_58;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_40;
  undefined4 *local_3c;
  int local_38;
  int local_2c;
  
  puVar9 = PTR___stack_chk_guard_0015ba2c;
  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;
  piVar8 = (int *)*param_1;
  uVar6 = *param_5;
  iVar1 = (*(code *)PTR_memset_0015b9b4)(&local_88,0,0x58);
  if ((param_5[9] & 0x20) == 0) {
    local_44 = param_8;
    local_48 = param_7;
    if (param_3 == 0x17) {
      puVar2 = (undefined4 *)(param_1[0x16] + param_9 * 0x28);
      local_44 = puVar2[1];
      local_48 = *puVar2;
    }
  }
  else {
    local_38 = param_5[2];
    if ((local_38 != 0) && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80)) {
      for (local_38 = *(int *)(local_38 + 0x14);
          (local_38 != 0 && ((*(byte *)(local_38 + 0x37) & 0xc0) != 0x80));
          local_38 = *(int *)(local_38 + 0x14)) {
      }
    }
    param_7 = 0;
    param_8 = 0;
    local_44 = 0;
    local_48 = 0;
  }
  local_72 = *(ushort *)((int)param_5 + 0x2a);
  local_74 = *(undefined1 *)((int)piVar8 + 0x4e);
  piVar3 = (int *)piVar8[0x3b];
  piVar8[0x3d] = iVar1;
  local_68 = PTR_UINT_0015b5fc + 0x2abe;
  local_58 = param_9;
  local_3c = param_5;
  local_88 = param_1;
  local_84 = param_2;
  local_80 = param_3;
  local_6c = piVar8;
  local_50 = param_7;
  local_4c = param_8;
  (*(code *)piVar8[0x3c])(piVar3,piVar8,param_3,param_4,uVar6);
  piVar8[0x3d] = 0;
  if (local_7c != 0) {
    piVar3 = piVar8;
    FUN_0002a924();
  }
  iVar1 = local_72 + 1;
  if (local_60 != 0) {
    piVar3 = piVar8;
    FUN_00035e50(piVar8,iVar1);
    iVar1 = local_72 + 1;
  }
  if (local_5c != 0) {
    piVar3 = piVar8;
    FUN_00035e50(piVar8,iVar1);
  }
  uVar4 = local_40;
  if (local_40 != 0) {
    iVar1 = (int)*(short *)(param_2 + 0x38);
    if (0 < iVar1) {
      iVar7 = 0;
      iVar5 = 0;
      do {
        if (((*(ushort *)(uVar4 + iVar7 + 8) & 0x2400) != 0) ||
           (*(int *)(uVar4 + iVar7 + 0x18) != 0)) {
          FUN_0002aedc();
          iVar1 = (int)*(short *)(param_2 + 0x38);
          uVar4 = local_40;
        }
        iVar5 = iVar5 + 1;
        iVar7 = iVar7 + 0x28;
      } while (iVar5 < iVar1);
    }
    FUN_0002a924();
    piVar3 = piVar8;
  }
  if (local_2c == *(int *)puVar9) {
    return *(int *)puVar9;
  }
  puVar9 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  if (piVar3 == (int *)0x0) {
    return *(int *)(puVar9 + 0x125414) + 0x2a80;
  }
  sqlite3_mutex_enter(*(undefined4 *)(*piVar3 + 0xc));
  if ((piVar3[0x1e] != 0) && (uVar4 < *(ushort *)(piVar3 + 0x24))) {
    return piVar3[0x1e] + uVar4 * 0x28;
  }
  iVar1 = *piVar3;
  *(undefined4 *)(iVar1 + 0x40) = 0x19;
  FUN_0002ecc0(iVar1,0x19);
  return *(int *)(puVar9 + 0x125414) + 0x2a80;
}

