
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 sqlite3DropTable(Parse *pParse,SrcList *pName,int isView,int noErr)

{
  ushort *puVar1;
  sqlite3 *db;
  Schema *pSVar2;
  uint uVar3;
  uint uVar4;
  code *pcVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  undefined4 *puVar9;
  Trigger *pTrigger;
  undefined4 uVar10;
  Db *pDVar11;
  Parse *pPVar12;
  HashElem *pHVar13;
  SrcList *pSVar14;
  Vdbe *pVVar15;
  sqlite3 *psVar16;
  int *piVar17;
  uint uVar18;
  ExprList *pOrderBy;
  Expr *pLimit;
  char *in_stack_ffffffac;
  char *zArg2;
  ExprList *in_stack_ffffffb4;
  Expr *in_stack_ffffffb8;
  uint local_40;
  Parse *local_38;
  Parse *local_34;
  int local_30;
  sqlite3 *local_2c;
  Vdbe *local_28;
  
  db = pParse->db;
  if ((db->mallocFailed != '\0') || (iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0))
  goto LAB_000a1878;
  if (noErr == 0) {
    zArg2 = (char *)0xa1beb;
    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);
    if (local_38 == (Parse *)0x0) goto LAB_000a1878;
  }
  else {
    db->suppressErr = db->suppressErr + '\x01';
    zArg2 = (char *)0xa18b5;
    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);
    db->suppressErr = db->suppressErr + 0xff;
    if (local_38 == (Parse *)0x0) {
      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);
      goto LAB_000a1878;
    }
  }
  pSVar2 = (Schema *)(local_38->constraintName).z;
  if (pSVar2 == (Schema *)0x0) {
    if (local_38->nLabel != 0) {
      zArg2 = (char *)0xa1cd3;
      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);
      if (iVar7 != 0) goto LAB_000a1878;
    }
    local_30 = -0x80000;
    local_34 = (Parse *)0xffff8000;
  }
  else {
    zArg2 = (char *)0xa18db;
    local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2);
    if (local_38->nLabel != 0) {
      zArg2 = (char *)0xa1c7b;
      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);
      if (iVar7 != 0) goto LAB_000a1878;
    }
    local_30 = (int)local_34 << 4;
  }
  iVar7 = *(int *)((int)&db->aDb->zDbSName + local_30);
  iVar8 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);
  if (iVar8 != 0) goto LAB_000a1878;
  if (isView == 0) {
    if (local_38->nLabel == 0) {
      pPVar12 = (Parse *)0x0;
    }
    else {
      piVar17 = local_38->aLabel;
      while( true ) {
        if (piVar17 == (int *)0x0) {
                    /* WARNING: Does not return */
          pcVar5 = (code *)invalidInstructionException();
          (*pcVar5)();
        }
        if (db == (sqlite3 *)*piVar17) break;
        piVar17 = (int *)piVar17[6];
      }
      pPVar12 = *(Parse **)(piVar17[1] + 4);
    }
  }
  else {
    pPVar12 = (Parse *)0x0;
  }
  iVar8 = sqlite3AuthCheck(pPVar12,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);
  if ((iVar8 != 0) ||
     (iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)
     , iVar7 != 0)) goto LAB_000a1878;
  iVar7 = sqlite3_strnicmp((char *)local_38->db,"sqlite_",7);
  if (iVar7 == 0) {
    iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4);
    if ((iVar7 != 0) &&
       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),
       iVar7 != 0)) goto LAB_000a1d3c;
  }
  else if (((local_38->nErr & 0x1000) != 0) &&
          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&
           (db->nVdbeExec == 0)))) {
LAB_000a1d3c:
    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);
    goto LAB_000a1878;
  }
  if (isView == 0) {
    if (local_38->rc != 0) {
      sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);
      goto LAB_000a1878;
    }
    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)
       ) goto LAB_000a1878;
    sqlite3BeginWriteOperation(pParse,1,(int)local_34);
    sqlite3ClearStatTables(pParse,(int)local_34,"tbl",(char *)local_38->db);
    local_2c = pParse->db;
    if (((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0)) {
      pVVar15 = pParse->pVdbe;
      if (pVVar15 == (Vdbe *)0x0) {
        pVVar15 = sqlite3GetVdbe(pParse);
      }
      pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),
                                    (char *)local_38->db,(uint *)0x0);
      if (pHVar13->data == (void *)0x0) {
        iVar7._0_1_ = local_38->colNamesSet;
        iVar7._1_1_ = local_38->checkSchema;
        iVar7._2_1_ = local_38->nested;
        iVar7._3_1_ = local_38->nTempReg;
        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {
          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {
            local_28 = (Vdbe *)(pParse->nLabel + -1);
            pParse->nLabel = (int)local_28;
            pLimit = (Expr *)0x0;
            pOrderBy = (ExprList *)local_28;
            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);
            pParse->disableTriggers = '\x01';
            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);
            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);
            pParse->disableTriggers = '\0';
            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;
            goto LAB_000a1fc7;
          }
        }
      }
      else {
        pParse->disableTriggers = '\x01';
        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);
        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);
        pParse->disableTriggers = '\0';
        local_28 = (Vdbe *)0x0;
        if ((local_2c->flags & 0x80000) == 0) {
LAB_000a1fc7:
          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);
          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');
LAB_000a1ffd:
          if (local_28 != (Vdbe *)0x0) {
            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);
          }
        }
      }
      local_2c = pParse->db;
    }
  }
  else {
    if (local_38->rc == 0) {
      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);
      goto LAB_000a1878;
    }
    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)
       ) goto LAB_000a1878;
    sqlite3BeginWriteOperation(pParse,1,(int)local_34);
    local_2c = pParse->db;
  }
  puVar9 = (undefined4 *)((int)&local_2c->aDb->zDbSName + local_30);
  local_28 = pParse->pVdbe;
  if (local_28 == (Vdbe *)0x0) {
    local_28 = sqlite3GetVdbe(pParse);
  }
  sqlite3BeginWriteOperation(pParse,1,(int)local_34);
  if (local_38->nLabel != 0) {
    sqlite3VdbeAddOp3(local_28,0xa2,0,0,0);
  }
  for (pTrigger = sqlite3TriggerList((Parse *)pParse->db,(Table *)(uint)pParse->disableTriggers,
                                     local_38); pTrigger != (Trigger *)0x0;
      pTrigger = pTrigger->pNext) {
    sqlite3DropTriggerPtr(pParse,pTrigger);
  }
  psVar16 = local_38->db;
  uVar10 = *puVar9;
  if ((local_38->nErr & 8) != 0) {
    sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16);
    psVar16 = local_38->db;
    uVar10 = *puVar9;
  }
  sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",
                     uVar10,psVar16);
  if (isView == 0) {
    if (local_38->nLabel == 0) {
      uVar3 = local_38->nRangeReg;
      uVar18 = 0;
      while( true ) {
        pVVar15 = local_38->pVdbe;
        local_40 = uVar3;
        if (uVar3 < uVar18) goto joined_r0x000a1f5d;
        if (uVar18 == 0) goto joined_r0x000a1f5d;
        if (pVVar15 == (Vdbe *)0x0) break;
        local_40 = 0;
        do {
          uVar4 = pVVar15->nChange;
          uVar6 = local_40;
          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {
            uVar6 = local_40;
          }
          local_40 = uVar6;
          pVVar15 = (Vdbe *)pVVar15->magic;
joined_r0x000a1f5d:
        } while (pVVar15 != (Vdbe *)0x0);
        if (local_40 == 0) break;
        iVar7 = -0x8000;
        pSVar2 = (Schema *)(local_38->constraintName).z;
        if (pSVar2 != (Schema *)0x0) {
          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);
        }
        destroyRootPage(pParse,local_40,iVar7);
        uVar18 = local_40;
      }
      goto LAB_000a1d8c;
    }
LAB_000a1af5:
    psVar16 = local_38->db;
    iVar7 = sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0);
    sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);
    pPVar12 = pParse->pToplevel;
    if (pParse->pToplevel == (Parse *)0x0) {
      pPVar12 = pParse;
    }
    pPVar12->mayAbort = '\x01';
  }
  else {
LAB_000a1d8c:
    if (local_38->nLabel != 0) goto LAB_000a1af5;
  }
  psVar16 = local_38->db;
  iVar7 = sqlite3VdbeAddOp3(local_28,0x8f,(int)local_34,0,0);
  sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);
  sqlite3ChangeCookie((Parse *)pParse->db,(int)pParse->pVdbe,local_34);
  pDVar11 = local_2c->aDb;
  iVar7 = *(int *)((int)&pDVar11->pSchema + local_30);
  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {
    piVar17 = *(int **)(iVar7 + 0x10);
    if (piVar17 != (int *)0x0) {
      do {
        iVar7 = piVar17[2];
        if (*(int *)(iVar7 + 0xc) != 0) {
          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));
          *(undefined4 *)(iVar7 + 4) = 0;
          *(undefined2 *)(iVar7 + 0x2a) = 0;
        }
        piVar17 = (int *)*piVar17;
      } while (piVar17 != (int *)0x0);
      pDVar11 = local_2c->aDb;
    }
    puVar1 = (ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e);
    *puVar1 = *puVar1 & 0xfffd;
  }
LAB_000a1878:
  sqlite3SrcListDelete(db,pName);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)

{
  ushort *puVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  code *pcVar5;
  uint uVar6;
  int iVar7;
  undefined4 *puVar8;
  int iVar9;
  int *piVar10;
  undefined4 uVar11;
  int extraout_ECX;
  int iVar12;
  undefined4 extraout_EDX;
  uint uVar13;
  uint local_40;
  int *local_38;
  int local_30;
  int local_2c;
  int local_28;
  
  iVar9 = *param_1;
  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;
  if (param_4 == 0) {
    local_38 = (int *)FUN_0008ffe0();
    if (local_38 == (int *)0x0) goto LAB_000a1878;
  }
  else {
    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';
    local_38 = (int *)FUN_0008ffe0();
    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;
    if (local_38 == (int *)0x0) {
      FUN_0006ddc0();
      goto LAB_000a1878;
    }
  }
  if (local_38[0x12] == 0) {
    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;
    local_30 = -0x80000;
  }
  else {
    local_30 = FUN_0002a630();
    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;
    local_30 = local_30 << 4;
  }
  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);
  iVar7 = FUN_0003c520(0,uVar2);
  if (iVar7 != 0) goto LAB_000a1878;
  if (param_3 == 0) {
    if (local_38[0xe] == 0) {
      uVar11 = 0;
    }
    else {
      piVar10 = (int *)local_38[0x10];
      while( true ) {
        if (piVar10 == (int *)0x0) {
                    /* WARNING: Does not return */
          pcVar5 = (code *)invalidInstructionException();
          (*pcVar5)();
        }
        if (iVar9 == *piVar10) break;
        piVar10 = (int *)piVar10[6];
      }
      uVar11 = *(undefined4 *)(piVar10[1] + 4);
    }
  }
  else {
    uVar11 = 0;
  }
  iVar7 = FUN_0003c520(uVar11,uVar2);
  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;
  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);
  if (iVar7 == 0) {
    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);
    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))
    goto LAB_000a1d3c;
  }
  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&
          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&
           (*(int *)(iVar9 + 0xb4) == 0)))) {
LAB_000a1d3c:
    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);
    goto LAB_000a1878;
  }
  if (param_3 == 0) {
    if (local_38[3] != 0) {
      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);
      goto LAB_000a1878;
    }
    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;
    FUN_0006dd90();
    FUN_0001d64f(*local_38);
    local_2c = *param_1;
    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {
      iVar9 = param_1[2];
      if (iVar9 == 0) {
        iVar9 = FUN_000318c0();
      }
      iVar7 = FUN_0001e430();
      if (*(int *)(iVar7 + 8) == 0) {
        iVar12 = extraout_ECX;
        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {
          if ((*(char *)(iVar7 + 0x18) != '\0') ||
             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {
            local_28 = param_1[0xe] + -1;
            param_1[0xe] = local_28;
            FUN_000315c0(local_28,0,iVar12,iVar12);
            *(undefined1 *)((int)param_1 + 0x96) = 1;
            FUN_00053790();
            FUN_00096310();
            *(undefined1 *)((int)param_1 + 0x96) = 0;
            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;
            goto LAB_000a1fc7;
          }
        }
      }
      else {
        *(undefined1 *)((int)param_1 + 0x96) = 1;
        FUN_00053790();
        FUN_00096310();
        *(undefined1 *)((int)param_1 + 0x96) = 0;
        local_28 = 0;
        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {
LAB_000a1fc7:
          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);
          FUN_00032230(0,0xffffffff,4);
LAB_000a1ffd:
          if (local_28 != 0) {
            FUN_00031430();
          }
        }
      }
      local_2c = *param_1;
    }
  }
  else {
    if (local_38[3] == 0) {
      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);
      goto LAB_000a1878;
    }
    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;
    FUN_0006dd90();
    local_2c = *param_1;
  }
  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));
  if (param_1[2] == 0) {
    FUN_000318c0();
  }
  FUN_0006dd90();
  if (local_38[0xe] != 0) {
    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);
  }
  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {
    FUN_000a1690();
  }
  iVar9 = *local_38;
  piVar10 = (int *)*puVar8;
  if ((*(byte *)(local_38 + 9) & 8) != 0) {
    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);
    iVar9 = *local_38;
    piVar10 = (int *)*puVar8;
  }
  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",
               piVar10,iVar9);
  if (param_3 == 0) {
    if (local_38[0xe] == 0) {
      uVar3 = local_38[7];
      uVar13 = 0;
      while( true ) {
        iVar9 = local_38[2];
        local_40 = uVar3;
        if (uVar3 < uVar13) goto joined_r0x000a1f5d;
        if (uVar13 == 0) goto joined_r0x000a1f5d;
        if (iVar9 == 0) break;
        local_40 = 0;
        do {
          uVar4 = *(uint *)(iVar9 + 0x2c);
          uVar6 = local_40;
          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {
            uVar6 = local_40;
          }
          local_40 = uVar6;
          iVar9 = *(int *)(iVar9 + 0x14);
joined_r0x000a1f5d:
        } while (iVar9 != 0);
        if (local_40 == 0) break;
        if (local_38[0x12] != 0) {
          FUN_0002a630();
        }
        FUN_0001d6fd();
        uVar13 = local_40;
      }
      goto LAB_000a1d8c;
    }
LAB_000a1af5:
    FUN_000315c0(0,0,local_38,local_38);
    FUN_00032090(0);
    piVar10 = (int *)param_1[0x1d];
    if ((int *)param_1[0x1d] == (int *)0x0) {
      piVar10 = param_1;
    }
    *(undefined1 *)((int)piVar10 + 0x15) = 1;
    piVar10 = local_38;
  }
  else {
LAB_000a1d8c:
    if (local_38[0xe] != 0) goto LAB_000a1af5;
  }
  FUN_000315c0(0,0,piVar10);
  FUN_00032090(0);
  FUN_00031940();
  iVar9 = *(int *)(local_2c + 0x10);
  iVar7 = *(int *)(iVar9 + 0xc + local_30);
  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {
    piVar10 = *(int **)(iVar7 + 0x10);
    if (piVar10 != (int *)0x0) {
      do {
        iVar9 = piVar10[2];
        if (*(int *)(iVar9 + 0xc) != 0) {
          FUN_00043d50();
          *(undefined4 *)(iVar9 + 4) = 0;
          *(undefined2 *)(iVar9 + 0x2a) = 0;
        }
        piVar10 = (int *)*piVar10;
      } while (piVar10 != (int *)0x0);
      iVar9 = *(int *)(local_2c + 0x10);
    }
    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);
    *puVar1 = *puVar1 & 0xfffd;
  }
LAB_000a1878:
  FUN_00043120();
  return;
}


PUSH EBP
PUSH EDI
MOV EBP,EDX
PUSH ESI
PUSH EBX
CALL 0x0001d810
ADD EBX,0x3c7a5
SUB ESP,0x3c
MOV ESI,dword ptr [EAX]
MOV dword ptr [ESP + 0x10],EBX
MOV dword ptr [ESP + 0xc],ECX
MOV EBX,dword ptr [ESP + 0x50]
CMP byte ptr [ESI + 0x4d],0x0
JZ 0x000a1890
ADD ESP,0x3c
MOV EDX,EBP
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x00043120
MOV EDI,EAX
CALL 0x0008f690
TEST EAX,EAX
JNZ 0x000a1878
TEST EBX,EBX
LEA ECX,[EBP + 0x8]
JZ 0x000a1be0
ADD byte ptr [ESI + 0x51],0x1
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,EDI
CALL 0x0008ffe0
SUB byte ptr [ESI + 0x51],0x1
TEST EAX,EAX
MOV dword ptr [ESP + 0x14],EAX
JZ 0x000a1c90
MOV EBX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [EBX + 0x48]
TEST EDX,EDX
JZ 0x000a1c40
MOV EAX,ESI
CALL 0x0002a630
MOV EBX,dword ptr [EBX + 0x38]
MOV dword ptr [ESP + 0x18],EAX
TEST EBX,EBX
JNZ 0x000a1c70
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,EAX
SHL ECX,0x4
CMP EAX,0x1
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x1c],ECX
LEA ECX,[EAX + 0xfffcbf31]
LEA EAX,[EAX + 0xfffcbf3f]
CMOVZ ECX,EAX
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESI + 0x10]
SUB ESP,0x8
MOV EBX,dword ptr [EAX + EDX*0x1]
MOV EDX,0x9
MOV EAX,EDI
PUSH EBX
PUSH 0x0
CALL 0x0003c520
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a1878
MOV ECX,dword ptr [ESP + 0xc]
TEST ECX,ECX
JZ 0x000a1c00
XOR EDX,EDX
CMP dword ptr [ESP + 0x18],0x1
SETNZ DL
LEA EDX,[EDX + EDX*0x1 + 0xf]
SUB ESP,0x8
PUSH EBX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV ECX,dword ptr [EAX]
MOV EAX,EDI
CALL 0x0003c520
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a1878
SUB ESP,0x8
MOV EDX,0x9
PUSH EBX
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x24]
MOV ECX,dword ptr [EAX]
MOV EAX,EDI
CALL 0x0003c520
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a1878
SUB ESP,0x4
PUSH 0x7
MOV EBX,dword ptr [ESP + 0x18]
LEA EAX,[EBX + 0xfffcbf08]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX]
CALL 0x00016c20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a1ce0
MOV EAX,dword ptr [ESP + 0x14]
TEST byte ptr [EAX + 0x25],0x10
JZ 0x000a19d2
TEST byte ptr [ESI + 0x1f],0x10
JZ 0x000a19d2
MOV ECX,dword ptr [ESI + 0x170]
TEST ECX,ECX
JZ 0x000a1e7a
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x14]
TEST EDX,EDX
MOV EAX,dword ptr [EAX + 0xc]
JZ 0x000a1d5e
TEST EAX,EAX
JZ 0x000a1ea0
MOV EAX,dword ptr [EDI + 0x8]
TEST EAX,EAX
JZ 0x000a1e66
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,EDI
MOV EDX,0x1
CALL 0x0006dd90
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x20],EAX
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x1c]
ADD EAX,dword ptr [ECX + 0x10]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [EDI + 0x8]
TEST EAX,EAX
MOV dword ptr [ESP + 0x24],EAX
JZ 0x000a1f61
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,EDI
MOV EDX,0x1
CALL 0x0006dd90
MOV EAX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [EAX + 0x38]
TEST ECX,ECX
JZ 0x000a1a60
PUSH EDX
PUSH EDX
XOR ECX,ECX
PUSH 0x0
PUSH 0x0
MOV EDX,0xa2
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x000315c0
ADD ESP,0x10
MOVZX EDX,byte ptr [EDI + 0x96]
MOV ECX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EDI]
CALL 0x0002ac70
TEST EAX,EAX
MOV EBX,EAX
JZ 0x000a1a90
NOP
LEA ESI,[ESI]
MOV EDX,EBX
MOV EAX,EDI
CALL 0x000a1690
MOV EBX,dword ptr [EBX + 0x20]
TEST EBX,EBX
JNZ 0x000a1a80
MOV ECX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x28]
TEST byte ptr [ECX + 0x24],0x8
MOV EDX,dword ptr [ECX]
MOV EAX,dword ptr [EAX]
JZ 0x000a1ac4
PUSH EDX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffd0784]
PUSH EAX
PUSH EDI
CALL 0x000a1550
MOV EAX,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV EAX,dword ptr [EAX]
PUSH EDX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffd07b4]
PUSH EAX
PUSH EDI
CALL 0x000a1550
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JNZ 0x000a1d8c
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x38]
TEST EAX,EAX
JZ 0x000a1ec0
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,0xa4
MOV EBX,dword ptr [EAX]
PUSH EAX
PUSH EAX
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x000315c0
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,EBX
MOV dword ptr [ESP],0x0
CALL 0x00032090
MOV EAX,dword ptr [EDI + 0x74]
ADD ESP,0x10
TEST EAX,EAX
CMOVZ EAX,EDI
MOV byte ptr [EAX + 0x15],0x1
MOV EAX,dword ptr [ESP + 0x14]
SUB ESP,0x8
MOV EDX,0x8f
MOV EBX,dword ptr [EAX]
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x000315c0
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,EBX
MOV dword ptr [ESP],0x0
CALL 0x00032090
MOV ECX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [EDI + 0x8]
MOV EAX,dword ptr [EDI]
CALL 0x00031940
MOV EAX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0x10]
MOV EDX,dword ptr [EAX + ECX*0x1 + 0xc]
TEST byte ptr [EDX + 0x4e],0x2
JZ 0x000a1878
MOV EBX,dword ptr [EDX + 0x10]
TEST EBX,EBX
JZ 0x000a1bcd
MOV EDI,dword ptr [EBX + 0x8]
MOV EAX,dword ptr [EDI + 0xc]
TEST EAX,EAX
JZ 0x000a1bc0
MOV EAX,dword ptr [ESP + 0x20]
LEA ECX,[EDI + 0x2a]
LEA EDX,[EDI + 0x4]
CALL 0x00043d50
XOR EAX,EAX
MOV dword ptr [EDI + 0x4],0x0
MOV word ptr [EDI + 0x2a],AX
MOV EBX,dword ptr [EBX]
TEST EBX,EBX
JNZ 0x000a1b9a
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0x10]
MOV ECX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX + ECX*0x1 + 0xc]
AND word ptr [EAX + 0x4e],0xfffd
JMP 0x000a1878
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,EDI
CALL 0x0008ffe0
TEST EAX,EAX
MOV dword ptr [ESP + 0x14],EAX
JNZ 0x000a18c5
JMP 0x000a1878
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [EAX + 0x38]
TEST EDX,EDX
JZ 0x000a1cb0
MOV EAX,dword ptr [EAX + 0x40]
TEST EAX,EAX
JNZ 0x000a1c27
JMP 0x000a1c9f
MOV EAX,dword ptr [EAX + 0x18]
TEST EAX,EAX
JZ 0x000a1c9f
CMP ESI,dword ptr [EAX]
JNZ 0x000a1c20
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,0x1e
MOV EAX,dword ptr [EAX + 0x4]
JMP 0x000a194e
MOV EAX,dword ptr [ESP + 0x14]
MOV EBX,dword ptr [EAX + 0x38]
TEST EBX,EBX
JNZ 0x000a1cc8
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x1c],0xfff80000
MOV dword ptr [ESP + 0x18],0xffff8000
LEA ECX,[EAX + 0xfffcbf31]
JMP 0x000a190d
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,EDI
CALL 0x00083c60
TEST EAX,EAX
JZ 0x000a18ea
JMP 0x000a1878
MOV EDX,dword ptr [EBP + 0xc]
MOV EAX,EDI
CALL 0x0006ddc0
JMP 0x000a1878
MOV EAX,[0x00000004]
UD2
XOR EDX,EDX
XOR EAX,EAX
CMP dword ptr [ESP + 0x18],0x1
SETZ DL
LEA EDX,[EDX + EDX*0x1 + 0xb]
JMP 0x000a194e
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,EDI
CALL 0x00083c60
TEST EAX,EAX
JZ 0x000a1c4b
JMP 0x000a1878
SUB ESP,0x4
PUSH 0x4
MOV EBX,dword ptr [ESP + 0x18]
LEA EAX,[EBX + 0xfffcd464]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x2c],EAX
ADD EAX,0x7
PUSH EAX
CALL 0x00016c20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a19d2
SUB ESP,0x4
PUSH 0xa
MOV EBX,dword ptr [ESP + 0x18]
LEA EAX,[EBX + 0xfffcc815]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x2c],EAX
ADD EAX,0x7
PUSH EAX
CALL 0x00016c20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a19d2
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x18]
PUSH dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffcd371]
PUSH EAX
PUSH EDI
CALL 0x0003c160
ADD ESP,0x10
JMP 0x000a1878
TEST EAX,EAX
JZ 0x000a1da0
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x18]
PUSH dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffd0764]
PUSH EAX
PUSH EDI
CALL 0x0003c160
ADD ESP,0x10
JMP 0x000a1878
MOV ESI,dword ptr [ESP + 0x28]
MOV EBP,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x38]
TEST EAX,EAX
JZ 0x000a1b36
JMP 0x000a1af5
MOV EDX,dword ptr [EDI + 0x8]
TEST EDX,EDX
JZ 0x000a1e8c
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,0x1
MOV EAX,EDI
CALL 0x0006dd90
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x20]
PUSH dword ptr [EBX]
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x28]
LEA ECX,[EAX + 0xfffcd38d]
MOV EAX,EDI
CALL 0x0001d64f
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
TEST byte ptr [EAX + 0x1d],0x40
JZ 0x000a1a0e
MOV EAX,dword ptr [EBX + 0x38]
TEST EAX,EAX
MOV dword ptr [ESP + 0x24],EAX
JNZ 0x000a1a0e
MOV EBX,dword ptr [EDI + 0x8]
TEST EBX,EBX
JZ 0x000a2044
MOV EDX,dword ptr [ESP + 0x14]
XOR ECX,ECX
MOV EAX,dword ptr [EDX + 0x48]
MOV dword ptr [ESP + 0x14],EDX
MOV EDX,dword ptr [EDX]
ADD EAX,0x38
CALL 0x0001e430
CMP dword ptr [EAX + 0x8],0x0
JZ 0x000a2018
MOV EAX,dword ptr [ESP + 0x20]
XOR ECX,ECX
MOV EDX,EBP
MOV byte ptr [EDI + 0x96],0x1
CALL 0x00053790
XOR ECX,ECX
MOV EDX,EAX
MOV EAX,EDI
CALL 0x00096310
MOV EAX,dword ptr [ESP + 0x20]
MOV byte ptr [EDI + 0x96],0x0
TEST byte ptr [EAX + 0x1e],0x8
JZ 0x000a1fc7
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x20],EAX
JMP 0x000a1a0e
MOV EAX,EDI
CALL 0x000318c0
TEST EAX,EAX
JZ 0x000a1878
JMP 0x000a19f8
CMP dword ptr [ESI + 0xb4],0x0
JNZ 0x000a19d2
JMP 0x000a1d3c
MOV EAX,EDI
CALL 0x000318c0
TEST EAX,EAX
JZ 0x000a1878
JMP 0x000a1dab
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
PUSH dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x18]
LEA EAX,[EAX + 0xfffd0740]
PUSH EAX
PUSH EDI
CALL 0x0003c160
ADD ESP,0x10
JMP 0x000a1878
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x28],ESI
MOV dword ptr [ESP + 0x2c],EBP
MOV EAX,dword ptr [EAX + 0x1c]
MOV dword ptr [ESP + 0x10],EAX
XOR EAX,EAX
MOV ESI,EAX
TEST ESI,ESI
SETZ AL
CMP dword ptr [ESP + 0x10],ESI
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x8]
JC 0x000a1f57
MOV EBX,EBP
TEST BL,BL
JNZ 0x000a1f57
TEST EAX,EAX
JZ 0x000a1d84
XOR EBX,EBX
MOV dword ptr [ESP + 0xc],EBX
NOP
MOV EDX,dword ptr [EAX + 0x2c]
MOV EBX,EBP
CMP ESI,EDX
SETA CL
OR BL,CL
JZ 0x000a1f1b
MOV ECX,dword ptr [ESP + 0xc]
CMP EDX,ECX
CMOVBE EDX,ECX
MOV dword ptr [ESP + 0xc],EDX
MOV EAX,dword ptr [EAX + 0x14]
TEST EAX,EAX
JNZ 0x000a1f00
MOV EBX,dword ptr [ESP + 0xc]
TEST EBX,EBX
JZ 0x000a1d84
MOV EAX,dword ptr [ESP + 0x14]
MOV ECX,0xffff8000
MOV EDX,dword ptr [EAX + 0x48]
TEST EDX,EDX
JZ 0x000a1f47
MOV EAX,dword ptr [EDI]
CALL 0x0002a630
MOV ECX,EAX
MOV EDX,EBX
MOV EAX,EDI
MOV ESI,EBX
CALL 0x0001d6fd
JMP 0x000a1ed7
TEST EAX,EAX
MOV EBX,dword ptr [ESP + 0x10]
JNZ 0x000a1efb
JMP 0x000a1f26
MOV EAX,EDI
CALL 0x000318c0
MOV dword ptr [ESP + 0x24],EAX
JMP 0x000a1a2c
MOV EAX,dword ptr [EDI + 0x38]
MOV EDX,0x2f
SUB EAX,0x1
MOV dword ptr [ESP + 0x24],EAX
MOV dword ptr [EDI + 0x38],EAX
PUSH ECX
PUSH ECX
MOV ECX,0x1
PUSH 0x0
PUSH EAX
MOV EAX,EBX
CALL 0x000315c0
MOV EAX,dword ptr [ESP + 0x30]
XOR ECX,ECX
MOV EDX,EBP
MOV byte ptr [EDI + 0x96],0x1
CALL 0x00053790
XOR ECX,ECX
MOV EDX,EAX
MOV EAX,EDI
CALL 0x00096310
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x20]
MOV byte ptr [EDI + 0x96],0x0
TEST byte ptr [EAX + 0x1e],0x8
JNZ 0x000a1ffd
PUSH EAX
PUSH EAX
XOR ECX,ECX
PUSH 0x0
MOV EAX,dword ptr [EBX + 0x68]
MOV EDX,0x2f
ADD EAX,0x2
PUSH EAX
MOV EAX,EBX
CALL 0x000315c0
ADD ESP,0xc
MOV ECX,0x2
MOV EDX,0x313
PUSH 0x4
PUSH -0x1
MOV EAX,EDI
PUSH 0x0
CALL 0x00032230
ADD ESP,0x10
CMP dword ptr [ESP + 0x24],0x0
JZ 0x000a1e5b
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,EBX
CALL 0x00031430
JMP 0x000a1e5b
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EDX + 0x10]
TEST EAX,EAX
JZ 0x000a1e5b
CMP byte ptr [EAX + 0x18],0x0
JNZ 0x000a1f71
MOV ECX,dword ptr [ESP + 0x20]
TEST byte ptr [ECX + 0x1e],0x8
JNZ 0x000a1f71
MOV EAX,dword ptr [EAX + 0x4]
JMP 0x000a201f
MOV EAX,EDI
CALL 0x000318c0
MOV EBX,EAX
JMP 0x000a1e06
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  ushort *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int *piVar10;\n  undefined4 uVar11;\n  int extraout_ECX;\n  int iVar12;\n  undefined4 extraout_EDX;\n  uint uVar13;\n  uint local_40;\n  int *local_38;\n  int local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar9 = *param_1;\n  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;\n  if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }\n  if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }\n  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);\n  iVar7 = FUN_0003c520(0,uVar2);\n  if (iVar7 != 0) goto LAB_000a1878;\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }\n  iVar7 = FUN_0003c520(uVar11,uVar2);\n  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }\n  if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }\n  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));\n  if (param_1[2] == 0) {\n    FUN_000318c0();\n  }\n  FUN_0006dd90();\n  if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }\n  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }\n  iVar9 = *local_38;\n  piVar10 = (int *)*puVar8;\n  if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }\n  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }\n  FUN_000315c0(0,0,piVar10);\n  FUN_00032090(0);\n  FUN_00031940();\n  iVar9 = *(int *)(local_2c + 0x10);\n  iVar7 = *(int *)(iVar9 + 0xc + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  FUN_00043120();\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  ushort *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int *piVar10;\n  undefined4 uVar11;\n  int extraout_ECX;\n  int iVar12;\n  undefined4 extraout_EDX;\n  uint uVar13;\n  uint local_40;\n  int *local_38;\n  int local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar9 = *param_1;\n  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;\n  if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }\n  if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }\n  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);\n  iVar7 = FUN_0003c520(0,uVar2);\n  if (iVar7 != 0) goto LAB_000a1878;\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }\n  iVar7 = FUN_0003c520(uVar11,uVar2);\n  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }\n  if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }\n  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));\n  if (param_1[2] == 0) {\n    FUN_000318c0();\n  }\n  FUN_0006dd90();\n  if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }\n  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }\n  iVar9 = *local_38;\n  piVar10 = (int *)*puVar8;\n  if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }\n  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }\n  FUN_000315c0(0,0,piVar10);\n  FUN_00032090(0);\n  FUN_00031940();\n  iVar9 = *(int *)(local_2c + 0x10);\n  iVar7 = *(int *)(iVar9 + 0xc + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  FUN_00043120();\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)" identifier (parameter_list "(int *param_1,undefined4 param_2,int param_3,int param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  ushort *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int *piVar10;\n  undefined4 uVar11;\n  int extraout_ECX;\n  int iVar12;\n  undefined4 extraout_EDX;\n  uint uVar13;\n  uint local_40;\n  int *local_38;\n  int local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar9 = *param_1;\n  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;\n  if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }\n  if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }\n  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);\n  iVar7 = FUN_0003c520(0,uVar2);\n  if (iVar7 != 0) goto LAB_000a1878;\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }\n  iVar7 = FUN_0003c520(uVar11,uVar2);\n  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }\n  if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }\n  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));\n  if (param_1[2] == 0) {\n    FUN_000318c0();\n  }\n  FUN_0006dd90();\n  if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }\n  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }\n  iVar9 = *local_38;\n  piVar10 = (int *)*puVar8;\n  if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }\n  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }\n  FUN_000315c0(0,0,piVar10);\n  FUN_00032090(0);\n  FUN_00031940();\n  iVar9 = *(int *)(local_2c + 0x10);\n  iVar7 = *(int *)(iVar9 + 0xc + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  FUN_00043120();\n  return;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "iVar9 = *param_1;" (assignment_expression "iVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0))" ( (binary_expression "(*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)" (parenthesized_expression "(*(char *)(iVar9 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar9 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar9 + 0x4d)" * (cast_expression "(char *)(iVar9 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x4d)" ( (binary_expression "iVar9 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar7 = FUN_0008f690(), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_0008f690(), iVar7 != 0" (assignment_expression "iVar7 = FUN_0008f690()" identifier = (call_expression "FUN_0008f690()" identifier (argument_list "()" ( )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (if_statement "if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }" { (expression_statement "local_38 = (int *)FUN_0008ffe0();" (assignment_expression "local_38 = (int *)FUN_0008ffe0()" identifier = (cast_expression "(int *)FUN_0008ffe0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008ffe0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_38 == (int *)0x0) goto LAB_000a1878;" if (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) }) (else_clause "else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" else (compound_statement "{\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" { (expression_statement "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';" (assignment_expression "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01'" (pointer_expression "*(char *)(iVar9 + 0x51)" * (cast_expression "(char *)(iVar9 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x51)" ( (binary_expression "iVar9 + 0x51" identifier + number_literal) )))) = (binary_expression "*(char *)(iVar9 + 0x51) + '\x01'" (pointer_expression "*(char *)(iVar9 + 0x51)" * (cast_expression "(char *)(iVar9 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x51)" ( (binary_expression "iVar9 + 0x51" identifier + number_literal) )))) + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "local_38 = (int *)FUN_0008ffe0();" (assignment_expression "local_38 = (int *)FUN_0008ffe0()" identifier = (cast_expression "(int *)FUN_0008ffe0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008ffe0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;" (assignment_expression "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1" (pointer_expression "*(char *)(iVar9 + 0x51)" * (cast_expression "(char *)(iVar9 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x51)" ( (binary_expression "iVar9 + 0x51" identifier + number_literal) )))) = (binary_expression "*(char *)(iVar9 + 0x51) + -1" (pointer_expression "*(char *)(iVar9 + 0x51)" * (cast_expression "(char *)(iVar9 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x51)" ( (binary_expression "iVar9 + 0x51" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }" { (expression_statement "FUN_0006ddc0();" (call_expression "FUN_0006ddc0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) }))) (if_statement "if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" if (parenthesized_expression "(local_38[0x12] == 0)" ( (binary_expression "local_38[0x12] == 0" (subscript_expression "local_38[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }" { (if_statement "if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0))" ( (binary_expression "(local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)" (parenthesized_expression "(local_38[0xe] != 0)" ( (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(iVar7 = FUN_00083c60(), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_00083c60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00083c60()" identifier = (call_expression "FUN_00083c60()" identifier (argument_list "()" ( )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "local_30 = -0x80000;" (assignment_expression "local_30 = -0x80000" identifier = number_literal) ;) }) (else_clause "else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" else (compound_statement "{\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" { (expression_statement "local_30 = FUN_0002a630();" (assignment_expression "local_30 = FUN_0002a630()" identifier = (call_expression "FUN_0002a630()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0))" ( (binary_expression "(local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)" (parenthesized_expression "(local_38[0xe] != 0)" ( (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(iVar7 = FUN_00083c60(), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_00083c60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00083c60()" identifier = (call_expression "FUN_00083c60()" identifier (argument_list "()" ( )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "local_30 = local_30 << 4;" (assignment_expression "local_30 = local_30 << 4" identifier = (binary_expression "local_30 << 4" identifier << number_literal)) ;) }))) (expression_statement "uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);" (assignment_expression "uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" * (cast_expression "(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0x10) + local_30)" ( (binary_expression "*(int *)(iVar9 + 0x10) + local_30" (pointer_expression "*(int *)(iVar9 + 0x10)" * (cast_expression "(int *)(iVar9 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) + identifier) ))))) ;) (expression_statement "iVar7 = FUN_0003c520(0,uVar2);" (assignment_expression "iVar7 = FUN_0003c520(0,uVar2)" identifier = (call_expression "FUN_0003c520(0,uVar2)" identifier (argument_list "(0,uVar2)" ( number_literal , identifier )))) ;) (if_statement "if (iVar7 != 0) goto LAB_000a1878;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (if_statement "if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }" { (if_statement "if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" if (parenthesized_expression "(local_38[0xe] == 0)" ( (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" else (compound_statement "{\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" { (expression_statement "piVar10 = (int *)local_38[0x10];" (assignment_expression "piVar10 = (int *)local_38[0x10]" identifier = (cast_expression "(int *)local_38[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_38[0x10]" identifier [ number_literal ]))) ;) (while_statement "while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }" { (if_statement "if (piVar10 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }" { comment (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (if_statement "if (iVar9 == *piVar10) break;" if (parenthesized_expression "(iVar9 == *piVar10)" ( (binary_expression "iVar9 == *piVar10" identifier == (pointer_expression "*piVar10" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "piVar10 = (int *)piVar10[6];" (assignment_expression "piVar10 = (int *)piVar10[6]" identifier = (cast_expression "(int *)piVar10[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[6]" identifier [ number_literal ]))) ;) })) (expression_statement "uVar11 = *(undefined4 *)(piVar10[1] + 4);" (assignment_expression "uVar11 = *(undefined4 *)(piVar10[1] + 4)" identifier = (pointer_expression "*(undefined4 *)(piVar10[1] + 4)" * (cast_expression "(undefined4 *)(piVar10[1] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10[1] + 4)" ( (binary_expression "piVar10[1] + 4" (subscript_expression "piVar10[1]" identifier [ number_literal ]) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    uVar11 = 0;\n  }" else (compound_statement "{\n    uVar11 = 0;\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar7 = FUN_0003c520(uVar11,uVar2);" (assignment_expression "iVar7 = FUN_0003c520(uVar11,uVar2)" identifier = (call_expression "FUN_0003c520(uVar11,uVar2)" identifier (argument_list "(uVar11,uVar2)" ( identifier , identifier )))) ;) (if_statement "if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0))" ( (binary_expression "(iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0" (assignment_expression "iVar7 = FUN_0003c520(0,uVar2)" identifier = (call_expression "FUN_0003c520(0,uVar2)" identifier (argument_list "(0,uVar2)" ( number_literal , identifier )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);" (assignment_expression "iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7)" identifier = (call_expression "sqlite3_strnicmp(*local_38,"sqlite_",7)" identifier (argument_list "(*local_38,"sqlite_",7)" ( (pointer_expression "*local_38" * identifier) , (string_literal ""sqlite_"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }" { (expression_statement "iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);" (assignment_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4)" identifier = (call_expression "sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4)" identifier (argument_list "(*local_38 + 7,&DAT_000ab464,4)" ( (binary_expression "*local_38 + 7" (pointer_expression "*local_38" * identifier) + number_literal) , (pointer_expression "&DAT_000ab464" & identifier) , number_literal )))) ;) (if_statement "if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;" if (parenthesized_expression "((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))" ( (binary_expression "(iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0)" ( (comma_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0" (assignment_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10)" identifier = (call_expression "sqlite3_strnicmp(*local_38 + 7,"parameters",10)" identifier (argument_list "(*local_38 + 7,"parameters",10)" ( (binary_expression "*local_38 + 7" (pointer_expression "*local_38" * identifier) + number_literal) , (string_literal ""parameters"" " string_content ") , number_literal )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1d3c;" goto statement_identifier ;)) }) (else_clause "else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" else (if_statement "if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" if (parenthesized_expression "(((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0))))" ( (binary_expression "((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))" (parenthesized_expression "((*(byte *)((int)local_38 + 0x25) & 0x10) != 0)" ( (binary_expression "(*(byte *)((int)local_38 + 0x25) & 0x10) != 0" (parenthesized_expression "(*(byte *)((int)local_38 + 0x25) & 0x10)" ( (binary_expression "*(byte *)((int)local_38 + 0x25) & 0x10" (pointer_expression "*(byte *)((int)local_38 + 0x25)" * (cast_expression "(byte *)((int)local_38 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_38 + 0x25)" ( (binary_expression "(int)local_38 + 0x25" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))" ( (parenthesized_expression "(((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0))" ( (binary_expression "((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)" (parenthesized_expression "((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0))" ( (binary_expression "(*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)" (binary_expression "(*(byte *)(iVar9 + 0x1f) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1f) & 0x10)" ( (binary_expression "*(byte *)(iVar9 + 0x1f) & 0x10" (pointer_expression "*(byte *)(iVar9 + 0x1f)" * (cast_expression "(byte *)(iVar9 + 0x1f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1f)" ( (binary_expression "iVar9 + 0x1f" identifier + number_literal) )))) & number_literal) )) != number_literal) && (parenthesized_expression "(*(int *)(iVar9 + 0x170) == 0)" ( (binary_expression "*(int *)(iVar9 + 0x170) == 0" (pointer_expression "*(int *)(iVar9 + 0x170)" * (cast_expression "(int *)(iVar9 + 0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x170)" ( (binary_expression "iVar9 + 0x170" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(int *)(iVar9 + 0xb4) == 0)" ( (binary_expression "*(int *)(iVar9 + 0xb4) == 0" (pointer_expression "*(int *)(iVar9 + 0xb4)" * (cast_expression "(int *)(iVar9 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xb4)" ( (binary_expression "iVar9 + 0xb4" identifier + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" { (labeled_statement "LAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);" statement_identifier : (expression_statement "FUN_0003c160(param_1,"table %s may not be dropped",*local_38);" (call_expression "FUN_0003c160(param_1,"table %s may not be dropped",*local_38)" identifier (argument_list "(param_1,"table %s may not be dropped",*local_38)" ( identifier , (string_literal ""table %s may not be dropped"" " string_content ") , (pointer_expression "*local_38" * identifier) ))) ;)) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })))) (if_statement "if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }" { (if_statement "if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38[3] != 0)" ( (binary_expression "local_38[3] != 0" (subscript_expression "local_38[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }" { (expression_statement "FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);" (call_expression "FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38)" identifier (argument_list "(param_1,"use DROP VIEW to delete view %s",*local_38)" ( identifier , (string_literal ""use DROP VIEW to delete view %s"" " string_content ") , (pointer_expression "*local_38" * identifier) ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) (if_statement "if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;" if (parenthesized_expression "((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0))" ( (binary_expression "(param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)" (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(iVar9 = FUN_000318c0(), iVar9 == 0)" ( (comma_expression "iVar9 = FUN_000318c0(), iVar9 == 0" (assignment_expression "iVar9 = FUN_000318c0()" identifier = (call_expression "FUN_000318c0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0001d64f(*local_38);" (call_expression "FUN_0001d64f(*local_38)" identifier (argument_list "(*local_38)" ( (pointer_expression "*local_38" * identifier) ))) ;) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }" if (parenthesized_expression "(((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0))" ( (binary_expression "((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)" (parenthesized_expression "((*(byte *)(local_2c + 0x1d) & 0x40) != 0)" ( (binary_expression "(*(byte *)(local_2c + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1d) & 0x40)" ( (binary_expression "*(byte *)(local_2c + 0x1d) & 0x40" (pointer_expression "*(byte *)(local_2c + 0x1d)" * (cast_expression "(byte *)(local_2c + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x1d)" ( (binary_expression "local_2c + 0x1d" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_38[0xe] == 0)" ( (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }" { (expression_statement "iVar9 = param_1[2];" (assignment_expression "iVar9 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (if_statement "if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar9 = FUN_000318c0();\n      }" { (expression_statement "iVar9 = FUN_000318c0();" (assignment_expression "iVar9 = FUN_000318c0()" identifier = (call_expression "FUN_000318c0()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "iVar7 = FUN_0001e430();" (assignment_expression "iVar7 = FUN_0001e430()" identifier = (call_expression "FUN_0001e430()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" if (parenthesized_expression "(*(int *)(iVar7 + 8) == 0)" ( (binary_expression "*(int *)(iVar7 + 8) == 0" (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }" { (expression_statement "iVar12 = extraout_ECX;" (assignment_expression "iVar12 = extraout_ECX" identifier = identifier) ;) (for_statement "for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }" for ( (assignment_expression "iVar7 = local_38[4]" identifier = (subscript_expression "local_38[4]" identifier [ number_literal ])) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = *(int *)(iVar7 + 4)" identifier = (pointer_expression "*(int *)(iVar7 + 4)" * (cast_expression "(int *)(iVar7 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ) (compound_statement "{\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }" { (if_statement "if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }" if (parenthesized_expression "((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0))" ( (binary_expression "(*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)" (parenthesized_expression "(*(char *)(iVar7 + 0x18) != '\0')" ( (binary_expression "*(char *)(iVar7 + 0x18) != '\0'" (pointer_expression "*(char *)(iVar7 + 0x18)" * (cast_expression "(char *)(iVar7 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)" ( (comma_expression "iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0" (assignment_expression "iVar12 = local_2c" identifier = identifier) , (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" ( (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" * (cast_expression "(byte *)(local_2c + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x1e)" ( (binary_expression "local_2c + 0x1e" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }" { (expression_statement "local_28 = param_1[0xe] + -1;" (assignment_expression "local_28 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = local_28;" (assignment_expression "param_1[0xe] = local_28" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(local_28,0,iVar12,iVar12);" (call_expression "FUN_000315c0(local_28,0,iVar12,iVar12)" identifier (argument_list "(local_28,0,iVar12,iVar12)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" * (cast_expression "(undefined1 *)((int)param_1 + 0x96)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x96)" ( (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053790();" (call_expression "FUN_00053790()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00096310();" (call_expression "FUN_00096310()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" * (cast_expression "(undefined1 *)((int)param_1 + 0x96)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x96)" ( (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;" if (parenthesized_expression "((*(byte *)(local_2c + 0x1e) & 8) != 0)" ( (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" ( (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" * (cast_expression "(byte *)(local_2c + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x1e)" ( (binary_expression "local_2c + 0x1e" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000a1ffd;" goto statement_identifier ;)) (goto_statement "goto LAB_000a1fc7;" goto statement_identifier ;) })) })) }) (else_clause "else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" else (compound_statement "{\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" { (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" * (cast_expression "(undefined1 *)((int)param_1 + 0x96)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x96)" ( (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053790();" (call_expression "FUN_00053790()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00096310();" (call_expression "FUN_00096310()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" * (cast_expression "(undefined1 *)((int)param_1 + 0x96)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x96)" ( (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (if_statement "if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }" if (parenthesized_expression "((*(byte *)(local_2c + 0x1e) & 8) == 0)" ( (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) == 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" ( (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" * (cast_expression "(byte *)(local_2c + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x1e)" ( (binary_expression "local_2c + 0x1e" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }" { (labeled_statement "LAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);" statement_identifier : (expression_statement "FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);" (call_expression "FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c)" identifier (argument_list "(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c)" ( (binary_expression "*(int *)(iVar9 + 0x68) + 2" (pointer_expression "*(int *)(iVar9 + 0x68)" * (cast_expression "(int *)(iVar9 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x68)" ( (binary_expression "iVar9 + 0x68" identifier + number_literal) )))) + number_literal) , number_literal , identifier , identifier ))) ;)) (expression_statement "FUN_00032230(0,0xffffffff,4);" (call_expression "FUN_00032230(0,0xffffffff,4)" identifier (argument_list "(0,0xffffffff,4)" ( number_literal , number_literal , number_literal ))) ;) (labeled_statement "LAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }" statement_identifier : (if_statement "if (local_28 != 0) {\n            FUN_00031430();\n          }" if (parenthesized_expression "(local_28 != 0)" ( (binary_expression "local_28 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00031430();\n          }" { (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) }))) })) }))) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) }) (else_clause "else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" else (compound_statement "{\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" { (if_statement "if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38[3] == 0)" ( (binary_expression "local_38[3] == 0" (subscript_expression "local_38[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }" { (expression_statement "FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);" (call_expression "FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0)" identifier (argument_list "(param_1,"use DROP TABLE to delete table %s",*local_38,0)" ( identifier , (string_literal ""use DROP TABLE to delete table %s"" " string_content ") , (pointer_expression "*local_38" * identifier) , number_literal ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) (if_statement "if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;" if (parenthesized_expression "((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0))" ( (binary_expression "(param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)" (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(iVar9 = FUN_000318c0(), iVar9 == 0)" ( (comma_expression "iVar9 = FUN_000318c0(), iVar9 == 0" (assignment_expression "iVar9 = FUN_000318c0()" identifier = (call_expression "FUN_000318c0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }))) (expression_statement "puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));" (assignment_expression "puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10))" identifier = (cast_expression "(undefined4 *)(local_30 + *(int *)(local_2c + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + *(int *)(local_2c + 0x10))" ( (binary_expression "local_30 + *(int *)(local_2c + 0x10)" identifier + (pointer_expression "*(int *)(local_2c + 0x10)" * (cast_expression "(int *)(local_2c + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x10)" ( (binary_expression "local_2c + 0x10" identifier + number_literal) ))))) )))) ;) (if_statement "if (param_1[2] == 0) {\n    FUN_000318c0();\n  }" if (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    FUN_000318c0();\n  }" { (expression_statement "FUN_000318c0();" (call_expression "FUN_000318c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }" if (parenthesized_expression "(local_38[0xe] != 0)" ( (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }" { (expression_statement "FUN_000315c0(0,0,extraout_EDX,extraout_EDX);" (call_expression "FUN_000315c0(0,0,extraout_EDX,extraout_EDX)" identifier (argument_list "(0,0,extraout_EDX,extraout_EDX)" ( number_literal , number_literal , identifier , identifier ))) ;) })) (for_statement "for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }" for ( (assignment_expression "iVar9 = FUN_0002ac70()" identifier = (call_expression "FUN_0002ac70()" identifier (argument_list "()" ( )))) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = *(int *)(iVar9 + 0x20)" identifier = (pointer_expression "*(int *)(iVar9 + 0x20)" * (cast_expression "(int *)(iVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) ))))) ) (compound_statement "{\n    FUN_000a1690();\n  }" { (expression_statement "FUN_000a1690();" (call_expression "FUN_000a1690()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar9 = *local_38;" (assignment_expression "iVar9 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (expression_statement "piVar10 = (int *)*puVar8;" (assignment_expression "piVar10 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }" if (parenthesized_expression "((*(byte *)(local_38 + 9) & 8) != 0)" ( (binary_expression "(*(byte *)(local_38 + 9) & 8) != 0" (parenthesized_expression "(*(byte *)(local_38 + 9) & 8)" ( (binary_expression "*(byte *)(local_38 + 9) & 8" (pointer_expression "*(byte *)(local_38 + 9)" * (cast_expression "(byte *)(local_38 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 9)" ( (binary_expression "local_38 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }" { (expression_statement "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);" (call_expression "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9)" identifier (argument_list "(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9)" ( identifier , (string_literal ""DELETE FROM %Q.sqlite_sequence WHERE name=%Q"" " string_content ") , identifier , identifier ))) ;) (expression_statement "iVar9 = *local_38;" (assignment_expression "iVar9 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (expression_statement "piVar10 = (int *)*puVar8;" (assignment_expression "piVar10 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) })) (expression_statement "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);" (call_expression "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9)" identifier (argument_list "(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9)" ( identifier , (string_literal ""DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'"" " string_content escape_sequence string_content escape_sequence ") , identifier , identifier ))) ;) (if_statement "if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }" { (if_statement "if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }" if (parenthesized_expression "(local_38[0xe] == 0)" ( (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }" { (expression_statement "uVar3 = local_38[7];" (assignment_expression "uVar3 = local_38[7]" identifier = (subscript_expression "local_38[7]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }" { (expression_statement "iVar9 = local_38[2];" (assignment_expression "iVar9 = local_38[2]" identifier = (subscript_expression "local_38[2]" identifier [ number_literal ])) ;) (expression_statement "local_40 = uVar3;" (assignment_expression "local_40 = uVar3" identifier = identifier) ;) (if_statement "if (uVar3 < uVar13) goto joined_r0x000a1f5d;" if (parenthesized_expression "(uVar3 < uVar13)" ( (binary_expression "uVar3 < uVar13" identifier < identifier) )) (goto_statement "goto joined_r0x000a1f5d;" goto statement_identifier ;)) (if_statement "if (uVar13 == 0) goto joined_r0x000a1f5d;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x000a1f5d;" goto statement_identifier ;)) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);" do (compound_statement "{\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        }" { (expression_statement "uVar4 = *(uint *)(iVar9 + 0x2c);" (assignment_expression "uVar4 = *(uint *)(iVar9 + 0x2c)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x2c)" * (cast_expression "(uint *)(iVar9 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2c)" ( (binary_expression "iVar9 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = local_40;" (assignment_expression "uVar6 = local_40" identifier = identifier) ;) (if_statement "if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }" if (parenthesized_expression "((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40))" ( (binary_expression "(uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)" (parenthesized_expression "(uVar13 == 0 || uVar4 < uVar13)" ( (binary_expression "uVar13 == 0 || uVar4 < uVar13" (binary_expression "uVar13 == 0" identifier == number_literal) || (binary_expression "uVar4 < uVar13" identifier < identifier)) )) && (parenthesized_expression "(uVar6 = uVar4, uVar4 <= local_40)" ( (comma_expression "uVar6 = uVar4, uVar4 <= local_40" (assignment_expression "uVar6 = uVar4" identifier = identifier) , (binary_expression "uVar4 <= local_40" identifier <= identifier)) ))) )) (compound_statement "{\n            uVar6 = local_40;\n          }" { (expression_statement "uVar6 = local_40;" (assignment_expression "uVar6 = local_40" identifier = identifier) ;) })) (expression_statement "local_40 = uVar6;" (assignment_expression "local_40 = uVar6" identifier = identifier) ;) (expression_statement "iVar9 = *(int *)(iVar9 + 0x14);" (assignment_expression "iVar9 = *(int *)(iVar9 + 0x14)" identifier = (pointer_expression "*(int *)(iVar9 + 0x14)" * (cast_expression "(int *)(iVar9 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14)" ( (binary_expression "iVar9 + 0x14" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x000a1f5d:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (if_statement "if (local_40 == 0) break;" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }" if (parenthesized_expression "(local_38[0x12] != 0)" ( (binary_expression "local_38[0x12] != 0" (subscript_expression "local_38[0x12]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          FUN_0002a630();\n        }" { (expression_statement "FUN_0002a630();" (call_expression "FUN_0002a630()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0001d6fd();" (call_expression "FUN_0001d6fd()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar13 = local_40;" (assignment_expression "uVar13 = local_40" identifier = identifier) ;) })) (goto_statement "goto LAB_000a1d8c;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);" statement_identifier : (expression_statement "FUN_000315c0(0,0,local_38,local_38);" (call_expression "FUN_000315c0(0,0,local_38,local_38)" identifier (argument_list "(0,0,local_38,local_38)" ( number_literal , number_literal , identifier , identifier ))) ;)) (expression_statement "FUN_00032090(0);" (call_expression "FUN_00032090(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "piVar10 = (int *)param_1[0x1d];" (assignment_expression "piVar10 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar10 = param_1;\n    }" { (expression_statement "piVar10 = param_1;" (assignment_expression "piVar10 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)((int)piVar10 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar10 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar10 + 0x15)" * (cast_expression "(undefined1 *)((int)piVar10 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x15)" ( (binary_expression "(int)piVar10 + 0x15" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar10 = local_38;" (assignment_expression "piVar10 = local_38" identifier = identifier) ;) }) (else_clause "else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" else (compound_statement "{\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" { (labeled_statement "LAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;" statement_identifier : (if_statement "if (local_38[0xe] != 0) goto LAB_000a1af5;" if (parenthesized_expression "(local_38[0xe] != 0)" ( (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000a1af5;" goto statement_identifier ;))) }))) (expression_statement "FUN_000315c0(0,0,piVar10);" (call_expression "FUN_000315c0(0,0,piVar10)" identifier (argument_list "(0,0,piVar10)" ( number_literal , number_literal , identifier ))) ;) (expression_statement "FUN_00032090(0);" (call_expression "FUN_00032090(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "FUN_00031940();" (call_expression "FUN_00031940()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar9 = *(int *)(local_2c + 0x10);" (assignment_expression "iVar9 = *(int *)(local_2c + 0x10)" identifier = (pointer_expression "*(int *)(local_2c + 0x10)" * (cast_expression "(int *)(local_2c + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x10)" ( (binary_expression "local_2c + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar9 + 0xc + local_30);" (assignment_expression "iVar7 = *(int *)(iVar9 + 0xc + local_30)" identifier = (pointer_expression "*(int *)(iVar9 + 0xc + local_30)" * (cast_expression "(int *)(iVar9 + 0xc + local_30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc + local_30)" ( (binary_expression "iVar9 + 0xc + local_30" (binary_expression "iVar9 + 0xc" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }" if (parenthesized_expression "((*(byte *)(iVar7 + 0x4e) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar7 + 0x4e) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x4e) & 2)" ( (binary_expression "*(byte *)(iVar7 + 0x4e) & 2" (pointer_expression "*(byte *)(iVar7 + 0x4e)" * (cast_expression "(byte *)(iVar7 + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4e)" ( (binary_expression "iVar7 + 0x4e" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }" { (expression_statement "piVar10 = *(int **)(iVar7 + 0x10);" (assignment_expression "piVar10 = *(int **)(iVar7 + 0x10)" identifier = (pointer_expression "*(int **)(iVar7 + 0x10)" * (cast_expression "(int **)(iVar7 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }" { (do_statement "do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);" do (compound_statement "{\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      }" { (expression_statement "iVar9 = piVar10[2];" (assignment_expression "iVar9 = piVar10[2]" identifier = (subscript_expression "piVar10[2]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }" if (parenthesized_expression "(*(int *)(iVar9 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar9 + 0xc) != 0" (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }" { (expression_statement "FUN_00043d50();" (call_expression "FUN_00043d50()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(iVar9 + 4) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 4) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 4)" * (cast_expression "(undefined4 *)(iVar9 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar9 + 0x2a) = 0;" (assignment_expression "*(undefined2 *)(iVar9 + 0x2a) = 0" (pointer_expression "*(undefined2 *)(iVar9 + 0x2a)" * (cast_expression "(undefined2 *)(iVar9 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2a)" ( (binary_expression "iVar9 + 0x2a" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "piVar10 = (int *)*piVar10;" (assignment_expression "piVar10 = (int *)*piVar10" identifier = (cast_expression "(int *)*piVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) }) while (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar9 = *(int *)(local_2c + 0x10);" (assignment_expression "iVar9 = *(int *)(local_2c + 0x10)" identifier = (pointer_expression "*(int *)(local_2c + 0x10)" * (cast_expression "(int *)(local_2c + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x10)" ( (binary_expression "local_2c + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);" (assignment_expression "puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" identifier = (cast_expression "(ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" ( (binary_expression "*(int *)(iVar9 + 0xc + local_30) + 0x4e" (pointer_expression "*(int *)(iVar9 + 0xc + local_30)" * (cast_expression "(int *)(iVar9 + 0xc + local_30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc + local_30)" ( (binary_expression "iVar9 + 0xc + local_30" (binary_expression "iVar9 + 0xc" identifier + number_literal) + identifier) )))) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 & 0xfffd;" (assignment_expression "*puVar1 = *puVar1 & 0xfffd" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 & 0xfffd" (pointer_expression "*puVar1" * identifier) & number_literal)) ;) })) (labeled_statement "LAB_000a1878:\n  FUN_00043120();" statement_identifier : (expression_statement "FUN_00043120();" (call_expression "FUN_00043120()" identifier (argument_list "()" ( ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 sqlite3DropTable(Parse *pParse,SrcList *pName,int isView,int noErr)\n\n{\n  ushort *puVar1;\n  sqlite3 *db;\n  Schema *pSVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  Trigger *pTrigger;\n  undefined4 uVar10;\n  Db *pDVar11;\n  Parse *pPVar12;\n  HashElem *pHVar13;\n  SrcList *pSVar14;\n  Vdbe *pVVar15;\n  sqlite3 *psVar16;\n  int *piVar17;\n  uint uVar18;\n  ExprList *pOrderBy;\n  Expr *pLimit;\n  char *in_stack_ffffffac;\n  char *zArg2;\n  ExprList *in_stack_ffffffb4;\n  Expr *in_stack_ffffffb8;\n  uint local_40;\n  Parse *local_38;\n  Parse *local_34;\n  int local_30;\n  sqlite3 *local_2c;\n  Vdbe *local_28;\n  \n  db = pParse->db;\n  if ((db->mallocFailed != '\0') || (iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0))\n  goto LAB_000a1878;\n  if (noErr == 0) {\n    zArg2 = (char *)0xa1beb;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    if (local_38 == (Parse *)0x0) goto LAB_000a1878;\n  }\n  else {\n    db->suppressErr = db->suppressErr + '\x01';\n    zArg2 = (char *)0xa18b5;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    db->suppressErr = db->suppressErr + 0xff;\n    if (local_38 == (Parse *)0x0) {\n      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);\n      goto LAB_000a1878;\n    }\n  }\n  pSVar2 = (Schema *)(local_38->constraintName).z;\n  if (pSVar2 == (Schema *)0x0) {\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1cd3;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = -0x80000;\n    local_34 = (Parse *)0xffff8000;\n  }\n  else {\n    zArg2 = (char *)0xa18db;\n    local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2);\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1c7b;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = (int)local_34 << 4;\n  }\n  iVar7 = *(int *)((int)&db->aDb->zDbSName + local_30);\n  iVar8 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);\n  if (iVar8 != 0) goto LAB_000a1878;\n  if (isView == 0) {\n    if (local_38->nLabel == 0) {\n      pPVar12 = (Parse *)0x0;\n    }\n    else {\n      piVar17 = local_38->aLabel;\n      while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }\n      pPVar12 = *(Parse **)(piVar17[1] + 4);\n    }\n  }\n  else {\n    pPVar12 = (Parse *)0x0;\n  }\n  iVar8 = sqlite3AuthCheck(pPVar12,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);\n  if ((iVar8 != 0) ||\n     (iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)\n     , iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp((char *)local_38->db,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4);\n    if ((iVar7 != 0) &&\n       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0)) goto LAB_000a1d3c;\n  }\n  else if (((local_38->nErr & 0x1000) != 0) &&\n          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)))) {\nLAB_000a1d3c:\n    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);\n    goto LAB_000a1878;\n  }\n  if (isView == 0) {\n    if (local_38->rc != 0) {\n      sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    sqlite3ClearStatTables(pParse,(int)local_34,"tbl",(char *)local_38->db);\n    local_2c = pParse->db;\n    if (((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0)) {\n      pVVar15 = pParse->pVdbe;\n      if (pVVar15 == (Vdbe *)0x0) {\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }\n      pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0);\n      if (pHVar13->data == (void *)0x0) {\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }\n      local_2c = pParse->db;\n    }\n  }\n  else {\n    if (local_38->rc == 0) {\n      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    local_2c = pParse->db;\n  }\n  puVar9 = (undefined4 *)((int)&local_2c->aDb->zDbSName + local_30);\n  local_28 = pParse->pVdbe;\n  if (local_28 == (Vdbe *)0x0) {\n    local_28 = sqlite3GetVdbe(pParse);\n  }\n  sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n  if (local_38->nLabel != 0) {\n    sqlite3VdbeAddOp3(local_28,0xa2,0,0,0);\n  }\n  for (pTrigger = sqlite3TriggerList((Parse *)pParse->db,(Table *)(uint)pParse->disableTriggers,\n                                     local_38); pTrigger != (Trigger *)0x0;\n      pTrigger = pTrigger->pNext) {\n    sqlite3DropTriggerPtr(pParse,pTrigger);\n  }\n  psVar16 = local_38->db;\n  uVar10 = *puVar9;\n  if ((local_38->nErr & 8) != 0) {\n    sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16);\n    psVar16 = local_38->db;\n    uVar10 = *puVar9;\n  }\n  sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n                     uVar10,psVar16);\n  if (isView == 0) {\n    if (local_38->nLabel == 0) {\n      uVar3 = local_38->nRangeReg;\n      uVar18 = 0;\n      while( true ) {\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    psVar16 = local_38->db;\n    iVar7 = sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0);\n    sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);\n    pPVar12 = pParse->pToplevel;\n    if (pParse->pToplevel == (Parse *)0x0) {\n      pPVar12 = pParse;\n    }\n    pPVar12->mayAbort = '\x01';\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38->nLabel != 0) goto LAB_000a1af5;\n  }\n  psVar16 = local_38->db;\n  iVar7 = sqlite3VdbeAddOp3(local_28,0x8f,(int)local_34,0,0);\n  sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);\n  sqlite3ChangeCookie((Parse *)pParse->db,(int)pParse->pVdbe,local_34);\n  pDVar11 = local_2c->aDb;\n  iVar7 = *(int *)((int)&pDVar11->pSchema + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar17 = *(int **)(iVar7 + 0x10);\n    if (piVar17 != (int *)0x0) {\n      do {\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      } while (piVar17 != (int *)0x0);\n      pDVar11 = local_2c->aDb;\n    }\n    puVar1 = (ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  sqlite3SrcListDelete(db,pName);\n  return;\n}\n\n" comment (function_definition "void __regparm3 sqlite3DropTable(Parse *pParse,SrcList *pName,int isView,int noErr)\n\n{\n  ushort *puVar1;\n  sqlite3 *db;\n  Schema *pSVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  Trigger *pTrigger;\n  undefined4 uVar10;\n  Db *pDVar11;\n  Parse *pPVar12;\n  HashElem *pHVar13;\n  SrcList *pSVar14;\n  Vdbe *pVVar15;\n  sqlite3 *psVar16;\n  int *piVar17;\n  uint uVar18;\n  ExprList *pOrderBy;\n  Expr *pLimit;\n  char *in_stack_ffffffac;\n  char *zArg2;\n  ExprList *in_stack_ffffffb4;\n  Expr *in_stack_ffffffb8;\n  uint local_40;\n  Parse *local_38;\n  Parse *local_34;\n  int local_30;\n  sqlite3 *local_2c;\n  Vdbe *local_28;\n  \n  db = pParse->db;\n  if ((db->mallocFailed != '\0') || (iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0))\n  goto LAB_000a1878;\n  if (noErr == 0) {\n    zArg2 = (char *)0xa1beb;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    if (local_38 == (Parse *)0x0) goto LAB_000a1878;\n  }\n  else {\n    db->suppressErr = db->suppressErr + '\x01';\n    zArg2 = (char *)0xa18b5;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    db->suppressErr = db->suppressErr + 0xff;\n    if (local_38 == (Parse *)0x0) {\n      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);\n      goto LAB_000a1878;\n    }\n  }\n  pSVar2 = (Schema *)(local_38->constraintName).z;\n  if (pSVar2 == (Schema *)0x0) {\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1cd3;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = -0x80000;\n    local_34 = (Parse *)0xffff8000;\n  }\n  else {\n    zArg2 = (char *)0xa18db;\n    local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2);\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1c7b;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = (int)local_34 << 4;\n  }\n  iVar7 = *(int *)((int)&db->aDb->zDbSName + local_30);\n  iVar8 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);\n  if (iVar8 != 0) goto LAB_000a1878;\n  if (isView == 0) {\n    if (local_38->nLabel == 0) {\n      pPVar12 = (Parse *)0x0;\n    }\n    else {\n      piVar17 = local_38->aLabel;\n      while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }\n      pPVar12 = *(Parse **)(piVar17[1] + 4);\n    }\n  }\n  else {\n    pPVar12 = (Parse *)0x0;\n  }\n  iVar8 = sqlite3AuthCheck(pPVar12,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);\n  if ((iVar8 != 0) ||\n     (iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)\n     , iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp((char *)local_38->db,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4);\n    if ((iVar7 != 0) &&\n       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0)) goto LAB_000a1d3c;\n  }\n  else if (((local_38->nErr & 0x1000) != 0) &&\n          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)))) {\nLAB_000a1d3c:\n    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);\n    goto LAB_000a1878;\n  }\n  if (isView == 0) {\n    if (local_38->rc != 0) {\n      sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    sqlite3ClearStatTables(pParse,(int)local_34,"tbl",(char *)local_38->db);\n    local_2c = pParse->db;\n    if (((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0)) {\n      pVVar15 = pParse->pVdbe;\n      if (pVVar15 == (Vdbe *)0x0) {\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }\n      pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0);\n      if (pHVar13->data == (void *)0x0) {\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }\n      local_2c = pParse->db;\n    }\n  }\n  else {\n    if (local_38->rc == 0) {\n      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    local_2c = pParse->db;\n  }\n  puVar9 = (undefined4 *)((int)&local_2c->aDb->zDbSName + local_30);\n  local_28 = pParse->pVdbe;\n  if (local_28 == (Vdbe *)0x0) {\n    local_28 = sqlite3GetVdbe(pParse);\n  }\n  sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n  if (local_38->nLabel != 0) {\n    sqlite3VdbeAddOp3(local_28,0xa2,0,0,0);\n  }\n  for (pTrigger = sqlite3TriggerList((Parse *)pParse->db,(Table *)(uint)pParse->disableTriggers,\n                                     local_38); pTrigger != (Trigger *)0x0;\n      pTrigger = pTrigger->pNext) {\n    sqlite3DropTriggerPtr(pParse,pTrigger);\n  }\n  psVar16 = local_38->db;\n  uVar10 = *puVar9;\n  if ((local_38->nErr & 8) != 0) {\n    sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16);\n    psVar16 = local_38->db;\n    uVar10 = *puVar9;\n  }\n  sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n                     uVar10,psVar16);\n  if (isView == 0) {\n    if (local_38->nLabel == 0) {\n      uVar3 = local_38->nRangeReg;\n      uVar18 = 0;\n      while( true ) {\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    psVar16 = local_38->db;\n    iVar7 = sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0);\n    sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);\n    pPVar12 = pParse->pToplevel;\n    if (pParse->pToplevel == (Parse *)0x0) {\n      pPVar12 = pParse;\n    }\n    pPVar12->mayAbort = '\x01';\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38->nLabel != 0) goto LAB_000a1af5;\n  }\n  psVar16 = local_38->db;\n  iVar7 = sqlite3VdbeAddOp3(local_28,0x8f,(int)local_34,0,0);\n  sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);\n  sqlite3ChangeCookie((Parse *)pParse->db,(int)pParse->pVdbe,local_34);\n  pDVar11 = local_2c->aDb;\n  iVar7 = *(int *)((int)&pDVar11->pSchema + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar17 = *(int **)(iVar7 + 0x10);\n    if (piVar17 != (int *)0x0) {\n      do {\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      } while (piVar17 != (int *)0x0);\n      pDVar11 = local_2c->aDb;\n    }\n    puVar1 = (ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  sqlite3SrcListDelete(db,pName);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "sqlite3DropTable(Parse *pParse,SrcList *pName,int isView,int noErr)" identifier (parameter_list "(Parse *pParse,SrcList *pName,int isView,int noErr)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "SrcList *pName" type_identifier (pointer_declarator "*pName" * identifier)) , (parameter_declaration "int isView" primitive_type identifier) , (parameter_declaration "int noErr" primitive_type identifier) ))) (compound_statement "{\n  ushort *puVar1;\n  sqlite3 *db;\n  Schema *pSVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  Trigger *pTrigger;\n  undefined4 uVar10;\n  Db *pDVar11;\n  Parse *pPVar12;\n  HashElem *pHVar13;\n  SrcList *pSVar14;\n  Vdbe *pVVar15;\n  sqlite3 *psVar16;\n  int *piVar17;\n  uint uVar18;\n  ExprList *pOrderBy;\n  Expr *pLimit;\n  char *in_stack_ffffffac;\n  char *zArg2;\n  ExprList *in_stack_ffffffb4;\n  Expr *in_stack_ffffffb8;\n  uint local_40;\n  Parse *local_38;\n  Parse *local_34;\n  int local_30;\n  sqlite3 *local_2c;\n  Vdbe *local_28;\n  \n  db = pParse->db;\n  if ((db->mallocFailed != '\0') || (iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0))\n  goto LAB_000a1878;\n  if (noErr == 0) {\n    zArg2 = (char *)0xa1beb;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    if (local_38 == (Parse *)0x0) goto LAB_000a1878;\n  }\n  else {\n    db->suppressErr = db->suppressErr + '\x01';\n    zArg2 = (char *)0xa18b5;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    db->suppressErr = db->suppressErr + 0xff;\n    if (local_38 == (Parse *)0x0) {\n      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);\n      goto LAB_000a1878;\n    }\n  }\n  pSVar2 = (Schema *)(local_38->constraintName).z;\n  if (pSVar2 == (Schema *)0x0) {\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1cd3;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = -0x80000;\n    local_34 = (Parse *)0xffff8000;\n  }\n  else {\n    zArg2 = (char *)0xa18db;\n    local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2);\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1c7b;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = (int)local_34 << 4;\n  }\n  iVar7 = *(int *)((int)&db->aDb->zDbSName + local_30);\n  iVar8 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);\n  if (iVar8 != 0) goto LAB_000a1878;\n  if (isView == 0) {\n    if (local_38->nLabel == 0) {\n      pPVar12 = (Parse *)0x0;\n    }\n    else {\n      piVar17 = local_38->aLabel;\n      while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }\n      pPVar12 = *(Parse **)(piVar17[1] + 4);\n    }\n  }\n  else {\n    pPVar12 = (Parse *)0x0;\n  }\n  iVar8 = sqlite3AuthCheck(pPVar12,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);\n  if ((iVar8 != 0) ||\n     (iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)\n     , iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp((char *)local_38->db,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4);\n    if ((iVar7 != 0) &&\n       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0)) goto LAB_000a1d3c;\n  }\n  else if (((local_38->nErr & 0x1000) != 0) &&\n          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)))) {\nLAB_000a1d3c:\n    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);\n    goto LAB_000a1878;\n  }\n  if (isView == 0) {\n    if (local_38->rc != 0) {\n      sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    sqlite3ClearStatTables(pParse,(int)local_34,"tbl",(char *)local_38->db);\n    local_2c = pParse->db;\n    if (((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0)) {\n      pVVar15 = pParse->pVdbe;\n      if (pVVar15 == (Vdbe *)0x0) {\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }\n      pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0);\n      if (pHVar13->data == (void *)0x0) {\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }\n      local_2c = pParse->db;\n    }\n  }\n  else {\n    if (local_38->rc == 0) {\n      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    local_2c = pParse->db;\n  }\n  puVar9 = (undefined4 *)((int)&local_2c->aDb->zDbSName + local_30);\n  local_28 = pParse->pVdbe;\n  if (local_28 == (Vdbe *)0x0) {\n    local_28 = sqlite3GetVdbe(pParse);\n  }\n  sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n  if (local_38->nLabel != 0) {\n    sqlite3VdbeAddOp3(local_28,0xa2,0,0,0);\n  }\n  for (pTrigger = sqlite3TriggerList((Parse *)pParse->db,(Table *)(uint)pParse->disableTriggers,\n                                     local_38); pTrigger != (Trigger *)0x0;\n      pTrigger = pTrigger->pNext) {\n    sqlite3DropTriggerPtr(pParse,pTrigger);\n  }\n  psVar16 = local_38->db;\n  uVar10 = *puVar9;\n  if ((local_38->nErr & 8) != 0) {\n    sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16);\n    psVar16 = local_38->db;\n    uVar10 = *puVar9;\n  }\n  sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n                     uVar10,psVar16);\n  if (isView == 0) {\n    if (local_38->nLabel == 0) {\n      uVar3 = local_38->nRangeReg;\n      uVar18 = 0;\n      while( true ) {\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    psVar16 = local_38->db;\n    iVar7 = sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0);\n    sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);\n    pPVar12 = pParse->pToplevel;\n    if (pParse->pToplevel == (Parse *)0x0) {\n      pPVar12 = pParse;\n    }\n    pPVar12->mayAbort = '\x01';\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38->nLabel != 0) goto LAB_000a1af5;\n  }\n  psVar16 = local_38->db;\n  iVar7 = sqlite3VdbeAddOp3(local_28,0x8f,(int)local_34,0,0);\n  sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);\n  sqlite3ChangeCookie((Parse *)pParse->db,(int)pParse->pVdbe,local_34);\n  pDVar11 = local_2c->aDb;\n  iVar7 = *(int *)((int)&pDVar11->pSchema + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar17 = *(int **)(iVar7 + 0x10);\n    if (piVar17 != (int *)0x0) {\n      do {\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      } while (piVar17 != (int *)0x0);\n      pDVar11 = local_2c->aDb;\n    }\n    puVar1 = (ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  sqlite3SrcListDelete(db,pName);\n  return;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "Schema *pSVar2;" type_identifier (pointer_declarator "*pSVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "Trigger *pTrigger;" type_identifier (pointer_declarator "*pTrigger" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "Db *pDVar11;" type_identifier (pointer_declarator "*pDVar11" * identifier) ;) (declaration "Parse *pPVar12;" type_identifier (pointer_declarator "*pPVar12" * identifier) ;) (declaration "HashElem *pHVar13;" type_identifier (pointer_declarator "*pHVar13" * identifier) ;) (declaration "SrcList *pSVar14;" type_identifier (pointer_declarator "*pSVar14" * identifier) ;) (declaration "Vdbe *pVVar15;" type_identifier (pointer_declarator "*pVVar15" * identifier) ;) (declaration "sqlite3 *psVar16;" type_identifier (pointer_declarator "*psVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "ExprList *pOrderBy;" type_identifier (pointer_declarator "*pOrderBy" * identifier) ;) (declaration "Expr *pLimit;" type_identifier (pointer_declarator "*pLimit" * identifier) ;) (declaration "char *in_stack_ffffffac;" primitive_type (pointer_declarator "*in_stack_ffffffac" * identifier) ;) (declaration "char *zArg2;" primitive_type (pointer_declarator "*zArg2" * identifier) ;) (declaration "ExprList *in_stack_ffffffb4;" type_identifier (pointer_declarator "*in_stack_ffffffb4" * identifier) ;) (declaration "Expr *in_stack_ffffffb8;" type_identifier (pointer_declarator "*in_stack_ffffffb8" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "Parse *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "Parse *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "sqlite3 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "Vdbe *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (if_statement "if ((db->mallocFailed != '\0') || (iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0))\n  goto LAB_000a1878;" if (parenthesized_expression "((db->mallocFailed != '\0') || (iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0))" ( (binary_expression "(db->mallocFailed != '\0') || (iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0)" (parenthesized_expression "(db->mallocFailed != '\0')" ( (binary_expression "db->mallocFailed != '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0)" ( (comma_expression "iVar7 = sqlite3ReadSchema(pParse), iVar7 != 0" (assignment_expression "iVar7 = sqlite3ReadSchema(pParse)" identifier = (call_expression "sqlite3ReadSchema(pParse)" identifier (argument_list "(pParse)" ( identifier )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (if_statement "if (noErr == 0) {\n    zArg2 = (char *)0xa1beb;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    if (local_38 == (Parse *)0x0) goto LAB_000a1878;\n  }\n  else {\n    db->suppressErr = db->suppressErr + '\x01';\n    zArg2 = (char *)0xa18b5;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    db->suppressErr = db->suppressErr + 0xff;\n    if (local_38 == (Parse *)0x0) {\n      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);\n      goto LAB_000a1878;\n    }\n  }" if (parenthesized_expression "(noErr == 0)" ( (binary_expression "noErr == 0" identifier == number_literal) )) (compound_statement "{\n    zArg2 = (char *)0xa1beb;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    if (local_38 == (Parse *)0x0) goto LAB_000a1878;\n  }" { (expression_statement "zArg2 = (char *)0xa1beb;" (assignment_expression "zArg2 = (char *)0xa1beb" identifier = (cast_expression "(char *)0xa1beb" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);" (assignment_expression "local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a)" identifier = (cast_expression "(Parse *)sqlite3LocateTableItem(pParse,isView,pName->a)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3LocateTableItem(pParse,isView,pName->a)" identifier (argument_list "(pParse,isView,pName->a)" ( identifier , identifier , (field_expression "pName->a" identifier -> field_identifier) ))))) ;) (if_statement "if (local_38 == (Parse *)0x0) goto LAB_000a1878;" if (parenthesized_expression "(local_38 == (Parse *)0x0)" ( (binary_expression "local_38 == (Parse *)0x0" identifier == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) }) (else_clause "else {\n    db->suppressErr = db->suppressErr + '\x01';\n    zArg2 = (char *)0xa18b5;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    db->suppressErr = db->suppressErr + 0xff;\n    if (local_38 == (Parse *)0x0) {\n      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);\n      goto LAB_000a1878;\n    }\n  }" else (compound_statement "{\n    db->suppressErr = db->suppressErr + '\x01';\n    zArg2 = (char *)0xa18b5;\n    local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);\n    db->suppressErr = db->suppressErr + 0xff;\n    if (local_38 == (Parse *)0x0) {\n      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);\n      goto LAB_000a1878;\n    }\n  }" { (expression_statement "db->suppressErr = db->suppressErr + '\x01';" (assignment_expression "db->suppressErr = db->suppressErr + '\x01'" (field_expression "db->suppressErr" identifier -> field_identifier) = (binary_expression "db->suppressErr + '\x01'" (field_expression "db->suppressErr" identifier -> field_identifier) + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "zArg2 = (char *)0xa18b5;" (assignment_expression "zArg2 = (char *)0xa18b5" identifier = (cast_expression "(char *)0xa18b5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a);" (assignment_expression "local_38 = (Parse *)sqlite3LocateTableItem(pParse,isView,pName->a)" identifier = (cast_expression "(Parse *)sqlite3LocateTableItem(pParse,isView,pName->a)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3LocateTableItem(pParse,isView,pName->a)" identifier (argument_list "(pParse,isView,pName->a)" ( identifier , identifier , (field_expression "pName->a" identifier -> field_identifier) ))))) ;) (expression_statement "db->suppressErr = db->suppressErr + 0xff;" (assignment_expression "db->suppressErr = db->suppressErr + 0xff" (field_expression "db->suppressErr" identifier -> field_identifier) = (binary_expression "db->suppressErr + 0xff" (field_expression "db->suppressErr" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (local_38 == (Parse *)0x0) {\n      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38 == (Parse *)0x0)" ( (binary_expression "local_38 == (Parse *)0x0" identifier == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);\n      goto LAB_000a1878;\n    }" { (expression_statement "sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase);" (call_expression "sqlite3CodeVerifyNamedSchema(pParse,pName->a[0].zDatabase)" identifier (argument_list "(pParse,pName->a[0].zDatabase)" ( identifier , (field_expression "pName->a[0].zDatabase" (subscript_expression "pName->a[0]" (field_expression "pName->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) }))) (expression_statement "pSVar2 = (Schema *)(local_38->constraintName).z;" (assignment_expression "pSVar2 = (Schema *)(local_38->constraintName).z" identifier = (cast_expression "(Schema *)(local_38->constraintName).z" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(local_38->constraintName).z" (parenthesized_expression "(local_38->constraintName)" ( (field_expression "local_38->constraintName" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (pSVar2 == (Schema *)0x0) {\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1cd3;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = -0x80000;\n    local_34 = (Parse *)0xffff8000;\n  }\n  else {\n    zArg2 = (char *)0xa18db;\n    local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2);\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1c7b;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = (int)local_34 << 4;\n  }" if (parenthesized_expression "(pSVar2 == (Schema *)0x0)" ( (binary_expression "pSVar2 == (Schema *)0x0" identifier == (cast_expression "(Schema *)0x0" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1cd3;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = -0x80000;\n    local_34 = (Parse *)0xffff8000;\n  }" { (if_statement "if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1cd3;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38->nLabel != 0)" ( (binary_expression "local_38->nLabel != 0" (field_expression "local_38->nLabel" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      zArg2 = (char *)0xa1cd3;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }" { (expression_statement "zArg2 = (char *)0xa1cd3;" (assignment_expression "zArg2 = (char *)0xa1cd3" identifier = (cast_expression "(char *)0xa1cd3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);" (assignment_expression "iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38)" identifier = (call_expression "sqlite3ViewGetColumnNames(pParse,(Table *)local_38)" identifier (argument_list "(pParse,(Table *)local_38)" ( identifier , (cast_expression "(Table *)local_38" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_000a1878;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) })) (expression_statement "local_30 = -0x80000;" (assignment_expression "local_30 = -0x80000" identifier = number_literal) ;) (expression_statement "local_34 = (Parse *)0xffff8000;" (assignment_expression "local_34 = (Parse *)0xffff8000" identifier = (cast_expression "(Parse *)0xffff8000" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    zArg2 = (char *)0xa18db;\n    local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2);\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1c7b;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = (int)local_34 << 4;\n  }" else (compound_statement "{\n    zArg2 = (char *)0xa18db;\n    local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2);\n    if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1c7b;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }\n    local_30 = (int)local_34 << 4;\n  }" { (expression_statement "zArg2 = (char *)0xa18db;" (assignment_expression "zArg2 = (char *)0xa18db" identifier = (cast_expression "(char *)0xa18db" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2);" (assignment_expression "local_34 = (Parse *)sqlite3SchemaToIndex(db,pSVar2)" identifier = (cast_expression "(Parse *)sqlite3SchemaToIndex(db,pSVar2)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3SchemaToIndex(db,pSVar2)" identifier (argument_list "(db,pSVar2)" ( identifier , identifier ))))) ;) (if_statement "if (local_38->nLabel != 0) {\n      zArg2 = (char *)0xa1c7b;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38->nLabel != 0)" ( (binary_expression "local_38->nLabel != 0" (field_expression "local_38->nLabel" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      zArg2 = (char *)0xa1c7b;\n      iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);\n      if (iVar7 != 0) goto LAB_000a1878;\n    }" { (expression_statement "zArg2 = (char *)0xa1c7b;" (assignment_expression "zArg2 = (char *)0xa1c7b" identifier = (cast_expression "(char *)0xa1c7b" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38);" (assignment_expression "iVar7 = sqlite3ViewGetColumnNames(pParse,(Table *)local_38)" identifier = (call_expression "sqlite3ViewGetColumnNames(pParse,(Table *)local_38)" identifier (argument_list "(pParse,(Table *)local_38)" ( identifier , (cast_expression "(Table *)local_38" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_000a1878;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) })) (expression_statement "local_30 = (int)local_34 << 4;" (assignment_expression "local_30 = (int)local_34 << 4" identifier = (binary_expression "(int)local_34 << 4" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) }))) (expression_statement "iVar7 = *(int *)((int)&db->aDb->zDbSName + local_30);" (assignment_expression "iVar7 = *(int *)((int)&db->aDb->zDbSName + local_30)" identifier = (pointer_expression "*(int *)((int)&db->aDb->zDbSName + local_30)" * (cast_expression "(int *)((int)&db->aDb->zDbSName + local_30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&db->aDb->zDbSName + local_30)" ( (binary_expression "(int)&db->aDb->zDbSName + local_30" (cast_expression "(int)&db->aDb->zDbSName" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&db->aDb->zDbSName" & (field_expression "db->aDb->zDbSName" (field_expression "db->aDb" identifier -> field_identifier) -> field_identifier))) + identifier) ))))) ;) (expression_statement "iVar8 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);" (assignment_expression "iVar8 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" identifier = (call_expression "sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" identifier (argument_list "((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , identifier , (cast_expression "(char *)in_stack_ffffffb4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar8 != 0) goto LAB_000a1878;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (if_statement "if (isView == 0) {\n    if (local_38->nLabel == 0) {\n      pPVar12 = (Parse *)0x0;\n    }\n    else {\n      piVar17 = local_38->aLabel;\n      while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }\n      pPVar12 = *(Parse **)(piVar17[1] + 4);\n    }\n  }\n  else {\n    pPVar12 = (Parse *)0x0;\n  }" if (parenthesized_expression "(isView == 0)" ( (binary_expression "isView == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38->nLabel == 0) {\n      pPVar12 = (Parse *)0x0;\n    }\n    else {\n      piVar17 = local_38->aLabel;\n      while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }\n      pPVar12 = *(Parse **)(piVar17[1] + 4);\n    }\n  }" { (if_statement "if (local_38->nLabel == 0) {\n      pPVar12 = (Parse *)0x0;\n    }\n    else {\n      piVar17 = local_38->aLabel;\n      while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }\n      pPVar12 = *(Parse **)(piVar17[1] + 4);\n    }" if (parenthesized_expression "(local_38->nLabel == 0)" ( (binary_expression "local_38->nLabel == 0" (field_expression "local_38->nLabel" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pPVar12 = (Parse *)0x0;\n    }" { (expression_statement "pPVar12 = (Parse *)0x0;" (assignment_expression "pPVar12 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      piVar17 = local_38->aLabel;\n      while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }\n      pPVar12 = *(Parse **)(piVar17[1] + 4);\n    }" else (compound_statement "{\n      piVar17 = local_38->aLabel;\n      while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }\n      pPVar12 = *(Parse **)(piVar17[1] + 4);\n    }" { (expression_statement "piVar17 = local_38->aLabel;" (assignment_expression "piVar17 = local_38->aLabel" identifier = (field_expression "local_38->aLabel" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (db == (sqlite3 *)*piVar17) break;\n        piVar17 = (int *)piVar17[6];\n      }" { (if_statement "if (piVar17 == (int *)0x0) {\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }" if (parenthesized_expression "(piVar17 == (int *)0x0)" ( (binary_expression "piVar17 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Does not return */\n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }" { comment (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (if_statement "if (db == (sqlite3 *)*piVar17) break;" if (parenthesized_expression "(db == (sqlite3 *)*piVar17)" ( (binary_expression "db == (sqlite3 *)*piVar17" identifier == (cast_expression "(sqlite3 *)*piVar17" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) )) (break_statement "break;" break ;)) (expression_statement "piVar17 = (int *)piVar17[6];" (assignment_expression "piVar17 = (int *)piVar17[6]" identifier = (cast_expression "(int *)piVar17[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[6]" identifier [ number_literal ]))) ;) })) (expression_statement "pPVar12 = *(Parse **)(piVar17[1] + 4);" (assignment_expression "pPVar12 = *(Parse **)(piVar17[1] + 4)" identifier = (pointer_expression "*(Parse **)(piVar17[1] + 4)" * (cast_expression "(Parse **)(piVar17[1] + 4)" ( (type_descriptor "Parse **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar17[1] + 4)" ( (binary_expression "piVar17[1] + 4" (subscript_expression "piVar17[1]" identifier [ number_literal ]) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    pPVar12 = (Parse *)0x0;\n  }" else (compound_statement "{\n    pPVar12 = (Parse *)0x0;\n  }" { (expression_statement "pPVar12 = (Parse *)0x0;" (assignment_expression "pPVar12 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "iVar8 = sqlite3AuthCheck(pPVar12,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);" (assignment_expression "iVar8 = sqlite3AuthCheck(pPVar12,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" identifier = (call_expression "sqlite3AuthCheck(pPVar12,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" identifier (argument_list "(pPVar12,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" ( identifier , identifier , identifier , identifier , (cast_expression "(char *)in_stack_ffffffb4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if ((iVar8 != 0) ||\n     (iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)\n     , iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((iVar8 != 0) ||\n     (iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)\n     , iVar7 != 0))" ( (binary_expression "(iVar8 != 0) ||\n     (iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)\n     , iVar7 != 0)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)\n     , iVar7 != 0)" ( (comma_expression "iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)\n     , iVar7 != 0" (assignment_expression "iVar7 = sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" identifier = (call_expression "sqlite3AuthCheck((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" identifier (argument_list "((Parse *)0x0,iVar7,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , identifier , (cast_expression "(char *)in_stack_ffffffb4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "iVar7 = sqlite3_strnicmp((char *)local_38->db,"sqlite_",7);" (assignment_expression "iVar7 = sqlite3_strnicmp((char *)local_38->db,"sqlite_",7)" identifier = (call_expression "sqlite3_strnicmp((char *)local_38->db,"sqlite_",7)" identifier (argument_list "((char *)local_38->db,"sqlite_",7)" ( (cast_expression "(char *)local_38->db" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "local_38->db" identifier -> field_identifier)) , (string_literal ""sqlite_"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n    iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4);\n    if ((iVar7 != 0) &&\n       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0)) goto LAB_000a1d3c;\n  }\n  else if (((local_38->nErr & 0x1000) != 0) &&\n          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)))) {\nLAB_000a1d3c:\n    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);\n    goto LAB_000a1878;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4);\n    if ((iVar7 != 0) &&\n       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0)) goto LAB_000a1d3c;\n  }" { (expression_statement "iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4);" (assignment_expression "iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4)" identifier = (call_expression "sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"stat",4)" identifier (argument_list "((char *)((int)&local_38->db->pVdbe + 3),"stat",4)" ( (cast_expression "(char *)((int)&local_38->db->pVdbe + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_38->db->pVdbe + 3)" ( (binary_expression "(int)&local_38->db->pVdbe + 3" (cast_expression "(int)&local_38->db->pVdbe" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_38->db->pVdbe" & (field_expression "local_38->db->pVdbe" (field_expression "local_38->db" identifier -> field_identifier) -> field_identifier))) + number_literal) ))) , (string_literal ""stat"" " string_content ") , number_literal )))) ;) (if_statement "if ((iVar7 != 0) &&\n       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0)) goto LAB_000a1d3c;" if (parenthesized_expression "((iVar7 != 0) &&\n       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0))" ( (binary_expression "(iVar7 != 0) &&\n       (iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0)" ( (comma_expression "iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10),\n       iVar7 != 0" (assignment_expression "iVar7 = sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10)" identifier = (call_expression "sqlite3_strnicmp((char *)((int)&local_38->db->pVdbe + 3),"parameters",10)" identifier (argument_list "((char *)((int)&local_38->db->pVdbe + 3),"parameters",10)" ( (cast_expression "(char *)((int)&local_38->db->pVdbe + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_38->db->pVdbe + 3)" ( (binary_expression "(int)&local_38->db->pVdbe + 3" (cast_expression "(int)&local_38->db->pVdbe" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_38->db->pVdbe" & (field_expression "local_38->db->pVdbe" (field_expression "local_38->db" identifier -> field_identifier) -> field_identifier))) + number_literal) ))) , (string_literal ""parameters"" " string_content ") , number_literal )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1d3c;" goto statement_identifier ;)) }) (else_clause "else if (((local_38->nErr & 0x1000) != 0) &&\n          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)))) {\nLAB_000a1d3c:\n    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);\n    goto LAB_000a1878;\n  }" else (if_statement "if (((local_38->nErr & 0x1000) != 0) &&\n          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)))) {\nLAB_000a1d3c:\n    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);\n    goto LAB_000a1878;\n  }" if (parenthesized_expression "(((local_38->nErr & 0x1000) != 0) &&\n          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0))))" ( (binary_expression "((local_38->nErr & 0x1000) != 0) &&\n          ((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)))" (parenthesized_expression "((local_38->nErr & 0x1000) != 0)" ( (binary_expression "(local_38->nErr & 0x1000) != 0" (parenthesized_expression "(local_38->nErr & 0x1000)" ( (binary_expression "local_38->nErr & 0x1000" (field_expression "local_38->nErr" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "((((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)))" ( (parenthesized_expression "(((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0))" ( (binary_expression "((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)) &&\n           (db->nVdbeExec == 0)" (parenthesized_expression "((db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0))" ( (binary_expression "(db->flags & 0x10000000) != 0 && (db->pVtabCtx == (VtabCtx *)0x0)" (binary_expression "(db->flags & 0x10000000) != 0" (parenthesized_expression "(db->flags & 0x10000000)" ( (binary_expression "db->flags & 0x10000000" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) != number_literal) && (parenthesized_expression "(db->pVtabCtx == (VtabCtx *)0x0)" ( (binary_expression "db->pVtabCtx == (VtabCtx *)0x0" (field_expression "db->pVtabCtx" identifier -> field_identifier) == (cast_expression "(VtabCtx *)0x0" ( (type_descriptor "VtabCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(db->nVdbeExec == 0)" ( (binary_expression "db->nVdbeExec == 0" (field_expression "db->nVdbeExec" identifier -> field_identifier) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_000a1d3c:\n    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);\n    goto LAB_000a1878;\n  }" { (labeled_statement "LAB_000a1d3c:\n    sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db);" (call_expression "sqlite3ErrorMsg(pParse,"table %s may not be dropped",local_38->db)" identifier (argument_list "(pParse,"table %s may not be dropped",local_38->db)" ( identifier , (string_literal ""table %s may not be dropped"" " string_content ") , (field_expression "local_38->db" identifier -> field_identifier) ))) ;)) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })))) (if_statement "if (isView == 0) {\n    if (local_38->rc != 0) {\n      sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    sqlite3ClearStatTables(pParse,(int)local_34,"tbl",(char *)local_38->db);\n    local_2c = pParse->db;\n    if (((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0)) {\n      pVVar15 = pParse->pVdbe;\n      if (pVVar15 == (Vdbe *)0x0) {\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }\n      pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0);\n      if (pHVar13->data == (void *)0x0) {\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }\n      local_2c = pParse->db;\n    }\n  }\n  else {\n    if (local_38->rc == 0) {\n      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    local_2c = pParse->db;\n  }" if (parenthesized_expression "(isView == 0)" ( (binary_expression "isView == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38->rc != 0) {\n      sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    sqlite3ClearStatTables(pParse,(int)local_34,"tbl",(char *)local_38->db);\n    local_2c = pParse->db;\n    if (((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0)) {\n      pVVar15 = pParse->pVdbe;\n      if (pVVar15 == (Vdbe *)0x0) {\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }\n      pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0);\n      if (pHVar13->data == (void *)0x0) {\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }\n      local_2c = pParse->db;\n    }\n  }" { (if_statement "if (local_38->rc != 0) {\n      sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38->rc != 0)" ( (binary_expression "local_38->rc != 0" (field_expression "local_38->rc" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);\n      goto LAB_000a1878;\n    }" { (expression_statement "sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db);" (call_expression "sqlite3ErrorMsg(pParse,"use DROP VIEW to delete view %s",local_38->db)" identifier (argument_list "(pParse,"use DROP VIEW to delete view %s",local_38->db)" ( identifier , (string_literal ""use DROP VIEW to delete view %s"" " string_content ") , (field_expression "local_38->db" identifier -> field_identifier) ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) (if_statement "if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;" if (parenthesized_expression "((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       )" ( (binary_expression "(pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)" (parenthesized_expression "(pParse->pVdbe == (Vdbe *)0x0)" ( (binary_expression "pParse->pVdbe == (Vdbe *)0x0" (field_expression "pParse->pVdbe" identifier -> field_identifier) == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)" ( (comma_expression "pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0" (assignment_expression "pVVar15 = sqlite3GetVdbe(pParse)" identifier = (call_expression "sqlite3GetVdbe(pParse)" identifier (argument_list "(pParse)" ( identifier )))) , (binary_expression "pVVar15 == (Vdbe *)0x0" identifier == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "sqlite3BeginWriteOperation(pParse,1,(int)local_34);" (call_expression "sqlite3BeginWriteOperation(pParse,1,(int)local_34)" identifier (argument_list "(pParse,1,(int)local_34)" ( identifier , number_literal , (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3ClearStatTables(pParse,(int)local_34,"tbl",(char *)local_38->db);" (call_expression "sqlite3ClearStatTables(pParse,(int)local_34,"tbl",(char *)local_38->db)" identifier (argument_list "(pParse,(int)local_34,"tbl",(char *)local_38->db)" ( identifier , (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) , (string_literal ""tbl"" " string_content ") , (cast_expression "(char *)local_38->db" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "local_38->db" identifier -> field_identifier)) ))) ;) (expression_statement "local_2c = pParse->db;" (assignment_expression "local_2c = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (if_statement "if (((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0)) {\n      pVVar15 = pParse->pVdbe;\n      if (pVVar15 == (Vdbe *)0x0) {\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }\n      pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0);\n      if (pHVar13->data == (void *)0x0) {\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }\n      local_2c = pParse->db;\n    }" if (parenthesized_expression "(((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0))" ( (binary_expression "((local_2c->flags & 0x4000) != 0) && (local_38->nLabel == 0)" (parenthesized_expression "((local_2c->flags & 0x4000) != 0)" ( (binary_expression "(local_2c->flags & 0x4000) != 0" (parenthesized_expression "(local_2c->flags & 0x4000)" ( (binary_expression "local_2c->flags & 0x4000" (field_expression "local_2c->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_38->nLabel == 0)" ( (binary_expression "local_38->nLabel == 0" (field_expression "local_38->nLabel" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n      pVVar15 = pParse->pVdbe;\n      if (pVVar15 == (Vdbe *)0x0) {\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }\n      pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0);\n      if (pHVar13->data == (void *)0x0) {\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }\n      local_2c = pParse->db;\n    }" { (expression_statement "pVVar15 = pParse->pVdbe;" (assignment_expression "pVVar15 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (if_statement "if (pVVar15 == (Vdbe *)0x0) {\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }" if (parenthesized_expression "(pVVar15 == (Vdbe *)0x0)" ( (binary_expression "pVVar15 == (Vdbe *)0x0" identifier == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pVVar15 = sqlite3GetVdbe(pParse);\n      }" { (expression_statement "pVVar15 = sqlite3GetVdbe(pParse);" (assignment_expression "pVVar15 = sqlite3GetVdbe(pParse)" identifier = (call_expression "sqlite3GetVdbe(pParse)" identifier (argument_list "(pParse)" ( identifier )))) ;) })) (expression_statement "pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0);" (assignment_expression "pHVar13 = findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0)" identifier = (call_expression "findElementWithHash((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0)" identifier (argument_list "((Hash *)((local_38->constraintName).z + 0x38),\n                                    (char *)local_38->db,(uint *)0x0)" ( (cast_expression "(Hash *)((local_38->constraintName).z + 0x38)" ( (type_descriptor "Hash *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_38->constraintName).z + 0x38)" ( (binary_expression "(local_38->constraintName).z + 0x38" (field_expression "(local_38->constraintName).z" (parenthesized_expression "(local_38->constraintName)" ( (field_expression "local_38->constraintName" identifier -> field_identifier) )) . field_identifier) + number_literal) ))) , (cast_expression "(char *)local_38->db" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "local_38->db" identifier -> field_identifier)) , (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (pHVar13->data == (void *)0x0) {\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }" if (parenthesized_expression "(pHVar13->data == (void *)0x0)" ( (binary_expression "pHVar13->data == (void *)0x0" (field_expression "pHVar13->data" identifier -> field_identifier) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar7._0_1_ = local_38->colNamesSet;\n        iVar7._1_1_ = local_38->checkSchema;\n        iVar7._2_1_ = local_38->nested;\n        iVar7._3_1_ = local_38->nTempReg;\n        for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }" { (expression_statement "iVar7._0_1_ = local_38->colNamesSet;" (assignment_expression "iVar7._0_1_ = local_38->colNamesSet" (field_expression "iVar7._0_1_" identifier . field_identifier) = (field_expression "local_38->colNamesSet" identifier -> field_identifier)) ;) (expression_statement "iVar7._1_1_ = local_38->checkSchema;" (assignment_expression "iVar7._1_1_ = local_38->checkSchema" (field_expression "iVar7._1_1_" identifier . field_identifier) = (field_expression "local_38->checkSchema" identifier -> field_identifier)) ;) (expression_statement "iVar7._2_1_ = local_38->nested;" (assignment_expression "iVar7._2_1_ = local_38->nested" (field_expression "iVar7._2_1_" identifier . field_identifier) = (field_expression "local_38->nested" identifier -> field_identifier)) ;) (expression_statement "iVar7._3_1_ = local_38->nTempReg;" (assignment_expression "iVar7._3_1_ = local_38->nTempReg" (field_expression "iVar7._3_1_" identifier . field_identifier) = (field_expression "local_38->nTempReg" identifier -> field_identifier)) ;) (for_statement "for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }" for ( ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = *(int *)(iVar7 + 4)" identifier = (pointer_expression "*(int *)(iVar7 + 4)" * (cast_expression "(int *)(iVar7 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ) (compound_statement "{\n          if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }" { (if_statement "if ((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }" if (parenthesized_expression "((*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0))" ( (binary_expression "(*(char *)(iVar7 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)" (parenthesized_expression "(*(char *)(iVar7 + 0x18) != '\0')" ( (binary_expression "*(char *)(iVar7 + 0x18) != '\0'" (pointer_expression "*(char *)(iVar7 + 0x18)" * (cast_expression "(char *)(iVar7 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "((local_2c->flags & 0x80000) != 0)" ( (binary_expression "(local_2c->flags & 0x80000) != 0" (parenthesized_expression "(local_2c->flags & 0x80000)" ( (binary_expression "local_2c->flags & 0x80000" (field_expression "local_2c->flags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n            local_28 = (Vdbe *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)local_28;\n            pLimit = (Expr *)0x0;\n            pOrderBy = (ExprList *)local_28;\n            sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);\n            pParse->disableTriggers = '\x01';\n            pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n            sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);\n            pParse->disableTriggers = '\0';\n            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }" { (expression_statement "local_28 = (Vdbe *)(pParse->nLabel + -1);" (assignment_expression "local_28 = (Vdbe *)(pParse->nLabel + -1)" identifier = (cast_expression "(Vdbe *)(pParse->nLabel + -1)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -1)" ( (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nLabel = (int)local_28;" (assignment_expression "pParse->nLabel = (int)local_28" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pLimit = (Expr *)0x0;" (assignment_expression "pLimit = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pOrderBy = (ExprList *)local_28;" (assignment_expression "pOrderBy = (ExprList *)local_28" identifier = (cast_expression "(ExprList *)local_28" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0);" (call_expression "sqlite3VdbeAddOp3(pVVar15,0x2f,1,(int)local_28,0)" identifier (argument_list "(pVVar15,0x2f,1,(int)local_28,0)" ( identifier , number_literal , number_literal , (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "pParse->disableTriggers = '\x01';" (assignment_expression "pParse->disableTriggers = '\x01'" (field_expression "pParse->disableTriggers" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pSVar14 = sqlite3SrcListDup(local_2c,pName,0);" (assignment_expression "pSVar14 = sqlite3SrcListDup(local_2c,pName,0)" identifier = (call_expression "sqlite3SrcListDup(local_2c,pName,0)" identifier (argument_list "(local_2c,pName,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit);" (call_expression "sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit)" identifier (argument_list "(pParse,pSVar14,(Expr *)0x0,pOrderBy,pLimit)" ( identifier , identifier , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier ))) ;) (expression_statement "pParse->disableTriggers = '\0';" (assignment_expression "pParse->disableTriggers = '\0'" (field_expression "pParse->disableTriggers" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;" if (parenthesized_expression "((local_2c->flags & 0x80000) != 0)" ( (binary_expression "(local_2c->flags & 0x80000) != 0" (parenthesized_expression "(local_2c->flags & 0x80000)" ( (binary_expression "local_2c->flags & 0x80000" (field_expression "local_2c->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000a1ffd;" goto statement_identifier ;)) (goto_statement "goto LAB_000a1fc7;" goto statement_identifier ;) })) })) }) (else_clause "else {\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }" else (compound_statement "{\n        pParse->disableTriggers = '\x01';\n        pSVar14 = sqlite3SrcListDup(local_2c,pName,0);\n        sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);\n        pParse->disableTriggers = '\0';\n        local_28 = (Vdbe *)0x0;\n        if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }\n      }" { (expression_statement "pParse->disableTriggers = '\x01';" (assignment_expression "pParse->disableTriggers = '\x01'" (field_expression "pParse->disableTriggers" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pSVar14 = sqlite3SrcListDup(local_2c,pName,0);" (assignment_expression "pSVar14 = sqlite3SrcListDup(local_2c,pName,0)" identifier = (call_expression "sqlite3SrcListDup(local_2c,pName,0)" identifier (argument_list "(local_2c,pName,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);" (call_expression "sqlite3DeleteFrom(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8)" identifier (argument_list "(pParse,pSVar14,(Expr *)0x0,in_stack_ffffffb4,in_stack_ffffffb8)" ( identifier , identifier , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier ))) ;) (expression_statement "pParse->disableTriggers = '\0';" (assignment_expression "pParse->disableTriggers = '\0'" (field_expression "pParse->disableTriggers" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_28 = (Vdbe *)0x0;" (assignment_expression "local_28 = (Vdbe *)0x0" identifier = (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((local_2c->flags & 0x80000) == 0) {\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }" if (parenthesized_expression "((local_2c->flags & 0x80000) == 0)" ( (binary_expression "(local_2c->flags & 0x80000) == 0" (parenthesized_expression "(local_2c->flags & 0x80000)" ( (binary_expression "local_2c->flags & 0x80000" (field_expression "local_2c->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);\n          sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');\nLAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }\n        }" { (labeled_statement "LAB_000a1fc7:\n          sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0);" (call_expression "sqlite3VdbeAddOp3(pVVar15,0x2f,0,pVVar15->nOp + 2,0)" identifier (argument_list "(pVVar15,0x2f,0,pVVar15->nOp + 2,0)" ( identifier , number_literal , number_literal , (binary_expression "pVVar15->nOp + 2" (field_expression "pVVar15->nOp" identifier -> field_identifier) + number_literal) , number_literal ))) ;)) (expression_statement "sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04');" (call_expression "sqlite3HaltConstraint(pParse,0x313,2,(char *)0x0,-1,'\x04')" identifier (argument_list "(pParse,0x313,2,(char *)0x0,-1,'\x04')" ( identifier , number_literal , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , (char_literal "'\x04'" ' escape_sequence ') ))) ;) (labeled_statement "LAB_000a1ffd:\n          if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }" statement_identifier : (if_statement "if (local_28 != (Vdbe *)0x0) {\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }" if (parenthesized_expression "(local_28 != (Vdbe *)0x0)" ( (binary_expression "local_28 != (Vdbe *)0x0" identifier != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sqlite3VdbeResolveLabel(pVVar15,(int)local_28);\n          }" { (expression_statement "sqlite3VdbeResolveLabel(pVVar15,(int)local_28);" (call_expression "sqlite3VdbeResolveLabel(pVVar15,(int)local_28)" identifier (argument_list "(pVVar15,(int)local_28)" ( identifier , (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }))) })) }))) (expression_statement "local_2c = pParse->db;" (assignment_expression "local_2c = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n    if (local_38->rc == 0) {\n      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    local_2c = pParse->db;\n  }" else (compound_statement "{\n    if (local_38->rc == 0) {\n      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);\n      goto LAB_000a1878;\n    }\n    if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;\n    sqlite3BeginWriteOperation(pParse,1,(int)local_34);\n    local_2c = pParse->db;\n  }" { (if_statement "if (local_38->rc == 0) {\n      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38->rc == 0)" ( (binary_expression "local_38->rc == 0" (field_expression "local_38->rc" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);\n      goto LAB_000a1878;\n    }" { (expression_statement "sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0);" (call_expression "sqlite3ErrorMsg(pParse,"use DROP TABLE to delete table %s",local_38->db,0)" identifier (argument_list "(pParse,"use DROP TABLE to delete table %s",local_38->db,0)" ( identifier , (string_literal ""use DROP TABLE to delete table %s"" " string_content ") , (field_expression "local_38->db" identifier -> field_identifier) , number_literal ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) (if_statement "if ((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       ) goto LAB_000a1878;" if (parenthesized_expression "((pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)\n       )" ( (binary_expression "(pParse->pVdbe == (Vdbe *)0x0) && (pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)" (parenthesized_expression "(pParse->pVdbe == (Vdbe *)0x0)" ( (binary_expression "pParse->pVdbe == (Vdbe *)0x0" (field_expression "pParse->pVdbe" identifier -> field_identifier) == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0)" ( (comma_expression "pVVar15 = sqlite3GetVdbe(pParse), pVVar15 == (Vdbe *)0x0" (assignment_expression "pVVar15 = sqlite3GetVdbe(pParse)" identifier = (call_expression "sqlite3GetVdbe(pParse)" identifier (argument_list "(pParse)" ( identifier )))) , (binary_expression "pVVar15 == (Vdbe *)0x0" identifier == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "sqlite3BeginWriteOperation(pParse,1,(int)local_34);" (call_expression "sqlite3BeginWriteOperation(pParse,1,(int)local_34)" identifier (argument_list "(pParse,1,(int)local_34)" ( identifier , number_literal , (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_2c = pParse->db;" (assignment_expression "local_2c = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) }))) (expression_statement "puVar9 = (undefined4 *)((int)&local_2c->aDb->zDbSName + local_30);" (assignment_expression "puVar9 = (undefined4 *)((int)&local_2c->aDb->zDbSName + local_30)" identifier = (cast_expression "(undefined4 *)((int)&local_2c->aDb->zDbSName + local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_2c->aDb->zDbSName + local_30)" ( (binary_expression "(int)&local_2c->aDb->zDbSName + local_30" (cast_expression "(int)&local_2c->aDb->zDbSName" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_2c->aDb->zDbSName" & (field_expression "local_2c->aDb->zDbSName" (field_expression "local_2c->aDb" identifier -> field_identifier) -> field_identifier))) + identifier) )))) ;) (expression_statement "local_28 = pParse->pVdbe;" (assignment_expression "local_28 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (if_statement "if (local_28 == (Vdbe *)0x0) {\n    local_28 = sqlite3GetVdbe(pParse);\n  }" if (parenthesized_expression "(local_28 == (Vdbe *)0x0)" ( (binary_expression "local_28 == (Vdbe *)0x0" identifier == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_28 = sqlite3GetVdbe(pParse);\n  }" { (expression_statement "local_28 = sqlite3GetVdbe(pParse);" (assignment_expression "local_28 = sqlite3GetVdbe(pParse)" identifier = (call_expression "sqlite3GetVdbe(pParse)" identifier (argument_list "(pParse)" ( identifier )))) ;) })) (expression_statement "sqlite3BeginWriteOperation(pParse,1,(int)local_34);" (call_expression "sqlite3BeginWriteOperation(pParse,1,(int)local_34)" identifier (argument_list "(pParse,1,(int)local_34)" ( identifier , number_literal , (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (local_38->nLabel != 0) {\n    sqlite3VdbeAddOp3(local_28,0xa2,0,0,0);\n  }" if (parenthesized_expression "(local_38->nLabel != 0)" ( (binary_expression "local_38->nLabel != 0" (field_expression "local_38->nLabel" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    sqlite3VdbeAddOp3(local_28,0xa2,0,0,0);\n  }" { (expression_statement "sqlite3VdbeAddOp3(local_28,0xa2,0,0,0);" (call_expression "sqlite3VdbeAddOp3(local_28,0xa2,0,0,0)" identifier (argument_list "(local_28,0xa2,0,0,0)" ( identifier , number_literal , number_literal , number_literal , number_literal ))) ;) })) (for_statement "for (pTrigger = sqlite3TriggerList((Parse *)pParse->db,(Table *)(uint)pParse->disableTriggers,\n                                     local_38); pTrigger != (Trigger *)0x0;\n      pTrigger = pTrigger->pNext) {\n    sqlite3DropTriggerPtr(pParse,pTrigger);\n  }" for ( (assignment_expression "pTrigger = sqlite3TriggerList((Parse *)pParse->db,(Table *)(uint)pParse->disableTriggers,\n                                     local_38)" identifier = (call_expression "sqlite3TriggerList((Parse *)pParse->db,(Table *)(uint)pParse->disableTriggers,\n                                     local_38)" identifier (argument_list "((Parse *)pParse->db,(Table *)(uint)pParse->disableTriggers,\n                                     local_38)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , (cast_expression "(Table *)(uint)pParse->disableTriggers" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)pParse->disableTriggers" ( (type_descriptor "uint" type_identifier) ) (field_expression "pParse->disableTriggers" identifier -> field_identifier))) , identifier )))) ; (binary_expression "pTrigger != (Trigger *)0x0" identifier != (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pTrigger = pTrigger->pNext" identifier = (field_expression "pTrigger->pNext" identifier -> field_identifier)) ) (compound_statement "{\n    sqlite3DropTriggerPtr(pParse,pTrigger);\n  }" { (expression_statement "sqlite3DropTriggerPtr(pParse,pTrigger);" (call_expression "sqlite3DropTriggerPtr(pParse,pTrigger)" identifier (argument_list "(pParse,pTrigger)" ( identifier , identifier ))) ;) })) (expression_statement "psVar16 = local_38->db;" (assignment_expression "psVar16 = local_38->db" identifier = (field_expression "local_38->db" identifier -> field_identifier)) ;) (expression_statement "uVar10 = *puVar9;" (assignment_expression "uVar10 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if ((local_38->nErr & 8) != 0) {\n    sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16);\n    psVar16 = local_38->db;\n    uVar10 = *puVar9;\n  }" if (parenthesized_expression "((local_38->nErr & 8) != 0)" ( (binary_expression "(local_38->nErr & 8) != 0" (parenthesized_expression "(local_38->nErr & 8)" ( (binary_expression "local_38->nErr & 8" (field_expression "local_38->nErr" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16);\n    psVar16 = local_38->db;\n    uVar10 = *puVar9;\n  }" { (expression_statement "sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16);" (call_expression "sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16)" identifier (argument_list "(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16)" ( identifier , (string_literal ""DELETE FROM %Q.sqlite_sequence WHERE name=%Q"" " string_content ") , identifier , identifier ))) ;) (expression_statement "psVar16 = local_38->db;" (assignment_expression "psVar16 = local_38->db" identifier = (field_expression "local_38->db" identifier -> field_identifier)) ;) (expression_statement "uVar10 = *puVar9;" (assignment_expression "uVar10 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) })) (expression_statement "sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n                     uVar10,psVar16);" (call_expression "sqlite3NestedParse(pParse,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n                     uVar10,psVar16)" identifier (argument_list "(pParse,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n                     uVar10,psVar16)" ( identifier , (string_literal ""DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'"" " string_content escape_sequence string_content escape_sequence ") , identifier , identifier ))) ;) (if_statement "if (isView == 0) {\n    if (local_38->nLabel == 0) {\n      uVar3 = local_38->nRangeReg;\n      uVar18 = 0;\n      while( true ) {\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    psVar16 = local_38->db;\n    iVar7 = sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0);\n    sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);\n    pPVar12 = pParse->pToplevel;\n    if (pParse->pToplevel == (Parse *)0x0) {\n      pPVar12 = pParse;\n    }\n    pPVar12->mayAbort = '\x01';\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38->nLabel != 0) goto LAB_000a1af5;\n  }" if (parenthesized_expression "(isView == 0)" ( (binary_expression "isView == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38->nLabel == 0) {\n      uVar3 = local_38->nRangeReg;\n      uVar18 = 0;\n      while( true ) {\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    psVar16 = local_38->db;\n    iVar7 = sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0);\n    sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);\n    pPVar12 = pParse->pToplevel;\n    if (pParse->pToplevel == (Parse *)0x0) {\n      pPVar12 = pParse;\n    }\n    pPVar12->mayAbort = '\x01';\n  }" { (if_statement "if (local_38->nLabel == 0) {\n      uVar3 = local_38->nRangeReg;\n      uVar18 = 0;\n      while( true ) {\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }" if (parenthesized_expression "(local_38->nLabel == 0)" ( (binary_expression "local_38->nLabel == 0" (field_expression "local_38->nLabel" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      uVar3 = local_38->nRangeReg;\n      uVar18 = 0;\n      while( true ) {\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }" { (expression_statement "uVar3 = local_38->nRangeReg;" (assignment_expression "uVar3 = local_38->nRangeReg" identifier = (field_expression "local_38->nRangeReg" identifier -> field_identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pVVar15 = local_38->pVdbe;\n        local_40 = uVar3;\n        if (uVar3 < uVar18) goto joined_r0x000a1f5d;\n        if (uVar18 == 0) goto joined_r0x000a1f5d;\n        if (pVVar15 == (Vdbe *)0x0) break;\n        local_40 = 0;\n        do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);\n        if (local_40 == 0) break;\n        iVar7 = -0x8000;\n        pSVar2 = (Schema *)(local_38->constraintName).z;\n        if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }\n        destroyRootPage(pParse,local_40,iVar7);\n        uVar18 = local_40;\n      }" { (expression_statement "pVVar15 = local_38->pVdbe;" (assignment_expression "pVVar15 = local_38->pVdbe" identifier = (field_expression "local_38->pVdbe" identifier -> field_identifier)) ;) (expression_statement "local_40 = uVar3;" (assignment_expression "local_40 = uVar3" identifier = identifier) ;) (if_statement "if (uVar3 < uVar18) goto joined_r0x000a1f5d;" if (parenthesized_expression "(uVar3 < uVar18)" ( (binary_expression "uVar3 < uVar18" identifier < identifier) )) (goto_statement "goto joined_r0x000a1f5d;" goto statement_identifier ;)) (if_statement "if (uVar18 == 0) goto joined_r0x000a1f5d;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x000a1f5d;" goto statement_identifier ;)) (if_statement "if (pVVar15 == (Vdbe *)0x0) break;" if (parenthesized_expression "(pVVar15 == (Vdbe *)0x0)" ( (binary_expression "pVVar15 == (Vdbe *)0x0" identifier == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        } while (pVVar15 != (Vdbe *)0x0);" do (compound_statement "{\n          uVar4 = pVVar15->nChange;\n          uVar6 = local_40;\n          if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          pVVar15 = (Vdbe *)pVVar15->magic;\njoined_r0x000a1f5d:\n        }" { (expression_statement "uVar4 = pVVar15->nChange;" (assignment_expression "uVar4 = pVVar15->nChange" identifier = (field_expression "pVVar15->nChange" identifier -> field_identifier)) ;) (expression_statement "uVar6 = local_40;" (assignment_expression "uVar6 = local_40" identifier = identifier) ;) (if_statement "if ((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }" if (parenthesized_expression "((uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40))" ( (binary_expression "(uVar18 == 0 || uVar4 < uVar18) && (uVar6 = uVar4, uVar4 <= local_40)" (parenthesized_expression "(uVar18 == 0 || uVar4 < uVar18)" ( (binary_expression "uVar18 == 0 || uVar4 < uVar18" (binary_expression "uVar18 == 0" identifier == number_literal) || (binary_expression "uVar4 < uVar18" identifier < identifier)) )) && (parenthesized_expression "(uVar6 = uVar4, uVar4 <= local_40)" ( (comma_expression "uVar6 = uVar4, uVar4 <= local_40" (assignment_expression "uVar6 = uVar4" identifier = identifier) , (binary_expression "uVar4 <= local_40" identifier <= identifier)) ))) )) (compound_statement "{\n            uVar6 = local_40;\n          }" { (expression_statement "uVar6 = local_40;" (assignment_expression "uVar6 = local_40" identifier = identifier) ;) })) (expression_statement "local_40 = uVar6;" (assignment_expression "local_40 = uVar6" identifier = identifier) ;) (expression_statement "pVVar15 = (Vdbe *)pVVar15->magic;" (assignment_expression "pVVar15 = (Vdbe *)pVVar15->magic" identifier = (cast_expression "(Vdbe *)pVVar15->magic" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pVVar15->magic" identifier -> field_identifier))) ;) (labeled_statement "joined_r0x000a1f5d:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(pVVar15 != (Vdbe *)0x0)" ( (binary_expression "pVVar15 != (Vdbe *)0x0" identifier != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (local_40 == 0) break;" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = -0x8000;" (assignment_expression "iVar7 = -0x8000" identifier = number_literal) ;) (expression_statement "pSVar2 = (Schema *)(local_38->constraintName).z;" (assignment_expression "pSVar2 = (Schema *)(local_38->constraintName).z" identifier = (cast_expression "(Schema *)(local_38->constraintName).z" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(local_38->constraintName).z" (parenthesized_expression "(local_38->constraintName)" ( (field_expression "local_38->constraintName" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (pSVar2 != (Schema *)0x0) {\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }" if (parenthesized_expression "(pSVar2 != (Schema *)0x0)" ( (binary_expression "pSVar2 != (Schema *)0x0" identifier != (cast_expression "(Schema *)0x0" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);\n        }" { (expression_statement "iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2);" (assignment_expression "iVar7 = sqlite3SchemaToIndex(pParse->db,pSVar2)" identifier = (call_expression "sqlite3SchemaToIndex(pParse->db,pSVar2)" identifier (argument_list "(pParse->db,pSVar2)" ( (field_expression "pParse->db" identifier -> field_identifier) , identifier )))) ;) })) (expression_statement "destroyRootPage(pParse,local_40,iVar7);" (call_expression "destroyRootPage(pParse,local_40,iVar7)" identifier (argument_list "(pParse,local_40,iVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar18 = local_40;" (assignment_expression "uVar18 = local_40" identifier = identifier) ;) })) (goto_statement "goto LAB_000a1d8c;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1af5:\n    psVar16 = local_38->db;" statement_identifier : (expression_statement "psVar16 = local_38->db;" (assignment_expression "psVar16 = local_38->db" identifier = (field_expression "local_38->db" identifier -> field_identifier)) ;)) (expression_statement "iVar7 = sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0);" (assignment_expression "iVar7 = sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_28,0xa4,(int)local_34,0,0)" identifier (argument_list "(local_28,0xa4,(int)local_34,0,0)" ( identifier , number_literal , (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal )))) ;) (expression_statement "sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);" (call_expression "sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0)" identifier (argument_list "(local_28,iVar7,(char *)psVar16,0)" ( identifier , identifier , (cast_expression "(char *)psVar16" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "pPVar12 = pParse->pToplevel;" (assignment_expression "pPVar12 = pParse->pToplevel" identifier = (field_expression "pParse->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse->pToplevel == (Parse *)0x0) {\n      pPVar12 = pParse;\n    }" if (parenthesized_expression "(pParse->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse->pToplevel == (Parse *)0x0" (field_expression "pParse->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pPVar12 = pParse;\n    }" { (expression_statement "pPVar12 = pParse;" (assignment_expression "pPVar12 = pParse" identifier = identifier) ;) })) (expression_statement "pPVar12->mayAbort = '\x01';" (assignment_expression "pPVar12->mayAbort = '\x01'" (field_expression "pPVar12->mayAbort" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) }) (else_clause "else {\nLAB_000a1d8c:\n    if (local_38->nLabel != 0) goto LAB_000a1af5;\n  }" else (compound_statement "{\nLAB_000a1d8c:\n    if (local_38->nLabel != 0) goto LAB_000a1af5;\n  }" { (labeled_statement "LAB_000a1d8c:\n    if (local_38->nLabel != 0) goto LAB_000a1af5;" statement_identifier : (if_statement "if (local_38->nLabel != 0) goto LAB_000a1af5;" if (parenthesized_expression "(local_38->nLabel != 0)" ( (binary_expression "local_38->nLabel != 0" (field_expression "local_38->nLabel" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_000a1af5;" goto statement_identifier ;))) }))) (expression_statement "psVar16 = local_38->db;" (assignment_expression "psVar16 = local_38->db" identifier = (field_expression "local_38->db" identifier -> field_identifier)) ;) (expression_statement "iVar7 = sqlite3VdbeAddOp3(local_28,0x8f,(int)local_34,0,0);" (assignment_expression "iVar7 = sqlite3VdbeAddOp3(local_28,0x8f,(int)local_34,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_28,0x8f,(int)local_34,0,0)" identifier (argument_list "(local_28,0x8f,(int)local_34,0,0)" ( identifier , number_literal , (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal )))) ;) (expression_statement "sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0);" (call_expression "sqlite3VdbeChangeP4(local_28,iVar7,(char *)psVar16,0)" identifier (argument_list "(local_28,iVar7,(char *)psVar16,0)" ( identifier , identifier , (cast_expression "(char *)psVar16" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "sqlite3ChangeCookie((Parse *)pParse->db,(int)pParse->pVdbe,local_34);" (call_expression "sqlite3ChangeCookie((Parse *)pParse->db,(int)pParse->pVdbe,local_34)" identifier (argument_list "((Parse *)pParse->db,(int)pParse->pVdbe,local_34)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , (cast_expression "(int)pParse->pVdbe" ( (type_descriptor "int" primitive_type) ) (field_expression "pParse->pVdbe" identifier -> field_identifier)) , identifier ))) ;) (expression_statement "pDVar11 = local_2c->aDb;" (assignment_expression "pDVar11 = local_2c->aDb" identifier = (field_expression "local_2c->aDb" identifier -> field_identifier)) ;) (expression_statement "iVar7 = *(int *)((int)&pDVar11->pSchema + local_30);" (assignment_expression "iVar7 = *(int *)((int)&pDVar11->pSchema + local_30)" identifier = (pointer_expression "*(int *)((int)&pDVar11->pSchema + local_30)" * (cast_expression "(int *)((int)&pDVar11->pSchema + local_30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pDVar11->pSchema + local_30)" ( (binary_expression "(int)&pDVar11->pSchema + local_30" (cast_expression "(int)&pDVar11->pSchema" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pDVar11->pSchema" & (field_expression "pDVar11->pSchema" identifier -> field_identifier))) + identifier) ))))) ;) (if_statement "if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar17 = *(int **)(iVar7 + 0x10);\n    if (piVar17 != (int *)0x0) {\n      do {\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      } while (piVar17 != (int *)0x0);\n      pDVar11 = local_2c->aDb;\n    }\n    puVar1 = (ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }" if (parenthesized_expression "((*(byte *)(iVar7 + 0x4e) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar7 + 0x4e) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x4e) & 2)" ( (binary_expression "*(byte *)(iVar7 + 0x4e) & 2" (pointer_expression "*(byte *)(iVar7 + 0x4e)" * (cast_expression "(byte *)(iVar7 + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4e)" ( (binary_expression "iVar7 + 0x4e" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    piVar17 = *(int **)(iVar7 + 0x10);\n    if (piVar17 != (int *)0x0) {\n      do {\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      } while (piVar17 != (int *)0x0);\n      pDVar11 = local_2c->aDb;\n    }\n    puVar1 = (ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }" { (expression_statement "piVar17 = *(int **)(iVar7 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar7 + 0x10)" identifier = (pointer_expression "*(int **)(iVar7 + 0x10)" * (cast_expression "(int **)(iVar7 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar17 != (int *)0x0) {\n      do {\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      } while (piVar17 != (int *)0x0);\n      pDVar11 = local_2c->aDb;\n    }" if (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      } while (piVar17 != (int *)0x0);\n      pDVar11 = local_2c->aDb;\n    }" { (do_statement "do {\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      } while (piVar17 != (int *)0x0);" do (compound_statement "{\n        iVar7 = piVar17[2];\n        if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }\n        piVar17 = (int *)*piVar17;\n      }" { (expression_statement "iVar7 = piVar17[2];" (assignment_expression "iVar7 = piVar17[2]" identifier = (subscript_expression "piVar17[2]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar7 + 0xc) != 0) {\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }" if (parenthesized_expression "(*(int *)(iVar7 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar7 + 0xc) != 0" (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));\n          *(undefined4 *)(iVar7 + 4) = 0;\n          *(undefined2 *)(iVar7 + 0x2a) = 0;\n        }" { (expression_statement "sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a));" (call_expression "sqlite3DeleteColumnNames(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a))" identifier (argument_list "(local_2c,(Table *)(iVar7 + 4),(Table *)(iVar7 + 0x2a))" ( identifier , (cast_expression "(Table *)(iVar7 + 4)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))) , (cast_expression "(Table *)(iVar7 + 0x2a)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x2a)" ( (binary_expression "iVar7 + 0x2a" identifier + number_literal) ))) ))) ;) (expression_statement "*(undefined4 *)(iVar7 + 4) = 0;" (assignment_expression "*(undefined4 *)(iVar7 + 4) = 0" (pointer_expression "*(undefined4 *)(iVar7 + 4)" * (cast_expression "(undefined4 *)(iVar7 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar7 + 0x2a) = 0;" (assignment_expression "*(undefined2 *)(iVar7 + 0x2a) = 0" (pointer_expression "*(undefined2 *)(iVar7 + 0x2a)" * (cast_expression "(undefined2 *)(iVar7 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x2a)" ( (binary_expression "iVar7 + 0x2a" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" identifier = (cast_expression "(int *)*piVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) }) while (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pDVar11 = local_2c->aDb;" (assignment_expression "pDVar11 = local_2c->aDb" identifier = (field_expression "local_2c->aDb" identifier -> field_identifier)) ;) })) (expression_statement "puVar1 = (ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e);" (assignment_expression "puVar1 = (ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e)" identifier = (cast_expression "(ushort *)(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e)" ( (binary_expression "*(int *)((int)&pDVar11->pSchema + local_30) + 0x4e" (pointer_expression "*(int *)((int)&pDVar11->pSchema + local_30)" * (cast_expression "(int *)((int)&pDVar11->pSchema + local_30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pDVar11->pSchema + local_30)" ( (binary_expression "(int)&pDVar11->pSchema + local_30" (cast_expression "(int)&pDVar11->pSchema" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pDVar11->pSchema" & (field_expression "pDVar11->pSchema" identifier -> field_identifier))) + identifier) )))) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 & 0xfffd;" (assignment_expression "*puVar1 = *puVar1 & 0xfffd" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 & 0xfffd" (pointer_expression "*puVar1" * identifier) & number_literal)) ;) })) (labeled_statement "LAB_000a1878:\n  sqlite3SrcListDelete(db,pName);" statement_identifier : (expression_statement "sqlite3SrcListDelete(db,pName);" (call_expression "sqlite3SrcListDelete(db,pName)" identifier (argument_list "(db,pName)" ( identifier , identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  ushort *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int *piVar10;\n  undefined4 uVar11;\n  int extraout_ECX;\n  int iVar12;\n  undefined4 extraout_EDX;\n  uint uVar13;\n  uint local_40;\n  int *local_38;\n  int local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar9 = *param_1;\n  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;\n  if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }\n  if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }\n  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);\n  iVar7 = FUN_0003c520(0,uVar2);\n  if (iVar7 != 0) goto LAB_000a1878;\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }\n  iVar7 = FUN_0003c520(uVar11,uVar2);\n  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }\n  if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }\n  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));\n  if (param_1[2] == 0) {\n    FUN_000318c0();\n  }\n  FUN_0006dd90();\n  if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }\n  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }\n  iVar9 = *local_38;\n  piVar10 = (int *)*puVar8;\n  if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }\n  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }\n  FUN_000315c0(0,0,piVar10);\n  FUN_00032090(0);\n  FUN_00031940();\n  iVar9 = *(int *)(local_2c + 0x10);\n  iVar7 = *(int *)(iVar9 + 0xc + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  FUN_00043120();\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  ushort *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int *piVar10;\n  undefined4 uVar11;\n  int extraout_ECX;\n  int iVar12;\n  undefined4 extraout_EDX;\n  uint uVar13;\n  uint local_40;\n  int *local_38;\n  int local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar9 = *param_1;\n  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;\n  if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }\n  if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }\n  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);\n  iVar7 = FUN_0003c520(0,uVar2);\n  if (iVar7 != 0) goto LAB_000a1878;\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }\n  iVar7 = FUN_0003c520(uVar11,uVar2);\n  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }\n  if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }\n  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));\n  if (param_1[2] == 0) {\n    FUN_000318c0();\n  }\n  FUN_0006dd90();\n  if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }\n  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }\n  iVar9 = *local_38;\n  piVar10 = (int *)*puVar8;\n  if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }\n  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }\n  FUN_000315c0(0,0,piVar10);\n  FUN_00032090(0);\n  FUN_00031940();\n  iVar9 = *(int *)(local_2c + 0x10);\n  iVar7 = *(int *)(iVar9 + 0xc + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  FUN_00043120();\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)" identifier (parameter_list "(int *param_1,undefined4 param_2,int param_3,int param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  ushort *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int *piVar10;\n  undefined4 uVar11;\n  int extraout_ECX;\n  int iVar12;\n  undefined4 extraout_EDX;\n  uint uVar13;\n  uint local_40;\n  int *local_38;\n  int local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar9 = *param_1;\n  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;\n  if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }\n  if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }\n  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);\n  iVar7 = FUN_0003c520(0,uVar2);\n  if (iVar7 != 0) goto LAB_000a1878;\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }\n  iVar7 = FUN_0003c520(uVar11,uVar2);\n  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }\n  if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }\n  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));\n  if (param_1[2] == 0) {\n    FUN_000318c0();\n  }\n  FUN_0006dd90();\n  if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }\n  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }\n  iVar9 = *local_38;\n  piVar10 = (int *)*puVar8;\n  if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }\n  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }\n  FUN_000315c0(0,0,piVar10);\n  FUN_00032090(0);\n  FUN_00031940();\n  iVar9 = *(int *)(local_2c + 0x10);\n  iVar7 = *(int *)(iVar9 + 0xc + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  FUN_00043120();\n  return;\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (expression_statement "iVar9 = *param_1;" (assignment_expression "iVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0))" ( (binary_expression "(*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)" (parenthesized_expression "(*(char *)(iVar9 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar9 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar9 + 0x4d)" * (cast_expression "(char *)(iVar9 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x4d)" ( (binary_expression "iVar9 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar7 = FUN_0008f690(), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_0008f690(), iVar7 != 0" (assignment_expression "iVar7 = FUN_0008f690()" identifier = (call_expression "FUN_0008f690()" identifier (argument_list "()" ( )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (if_statement "if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }" { (expression_statement "local_38 = (int *)FUN_0008ffe0();" (assignment_expression "local_38 = (int *)FUN_0008ffe0()" identifier = (cast_expression "(int *)FUN_0008ffe0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008ffe0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_38 == (int *)0x0) goto LAB_000a1878;" if (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) }) (else_clause "else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" else (compound_statement "{\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" { (expression_statement "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';" (assignment_expression "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01'" (pointer_expression "*(char *)(iVar9 + 0x51)" * (cast_expression "(char *)(iVar9 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x51)" ( (binary_expression "iVar9 + 0x51" identifier + number_literal) )))) = (binary_expression "*(char *)(iVar9 + 0x51) + '\x01'" (pointer_expression "*(char *)(iVar9 + 0x51)" * (cast_expression "(char *)(iVar9 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x51)" ( (binary_expression "iVar9 + 0x51" identifier + number_literal) )))) + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "local_38 = (int *)FUN_0008ffe0();" (assignment_expression "local_38 = (int *)FUN_0008ffe0()" identifier = (cast_expression "(int *)FUN_0008ffe0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008ffe0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;" (assignment_expression "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1" (pointer_expression "*(char *)(iVar9 + 0x51)" * (cast_expression "(char *)(iVar9 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x51)" ( (binary_expression "iVar9 + 0x51" identifier + number_literal) )))) = (binary_expression "*(char *)(iVar9 + 0x51) + -1" (pointer_expression "*(char *)(iVar9 + 0x51)" * (cast_expression "(char *)(iVar9 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x51)" ( (binary_expression "iVar9 + 0x51" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }" { (expression_statement "FUN_0006ddc0();" (call_expression "FUN_0006ddc0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) }))) (if_statement "if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" if (parenthesized_expression "(local_38[0x12] == 0)" ( (binary_expression "local_38[0x12] == 0" (subscript_expression "local_38[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }" { (if_statement "if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0))" ( (binary_expression "(local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)" (parenthesized_expression "(local_38[0xe] != 0)" ( (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(iVar7 = FUN_00083c60(), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_00083c60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00083c60()" identifier = (call_expression "FUN_00083c60()" identifier (argument_list "()" ( )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "local_30 = -0x80000;" (assignment_expression "local_30 = -0x80000" identifier = number_literal) ;) }) (else_clause "else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" else (compound_statement "{\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" { (expression_statement "local_30 = FUN_0002a630();" (assignment_expression "local_30 = FUN_0002a630()" identifier = (call_expression "FUN_0002a630()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0))" ( (binary_expression "(local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)" (parenthesized_expression "(local_38[0xe] != 0)" ( (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(iVar7 = FUN_00083c60(), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_00083c60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00083c60()" identifier = (call_expression "FUN_00083c60()" identifier (argument_list "()" ( )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "local_30 = local_30 << 4;" (assignment_expression "local_30 = local_30 << 4" identifier = (binary_expression "local_30 << 4" identifier << number_literal)) ;) }))) (expression_statement "uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);" (assignment_expression "uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" * (cast_expression "(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0x10) + local_30)" ( (binary_expression "*(int *)(iVar9 + 0x10) + local_30" (pointer_expression "*(int *)(iVar9 + 0x10)" * (cast_expression "(int *)(iVar9 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) + identifier) ))))) ;) (expression_statement "iVar7 = FUN_0003c520(0,uVar2);" (assignment_expression "iVar7 = FUN_0003c520(0,uVar2)" identifier = (call_expression "FUN_0003c520(0,uVar2)" identifier (argument_list "(0,uVar2)" ( number_literal , identifier )))) ;) (if_statement "if (iVar7 != 0) goto LAB_000a1878;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (if_statement "if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }" { (if_statement "if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" if (parenthesized_expression "(local_38[0xe] == 0)" ( (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" else (compound_statement "{\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" { (expression_statement "piVar10 = (int *)local_38[0x10];" (assignment_expression "piVar10 = (int *)local_38[0x10]" identifier = (cast_expression "(int *)local_38[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_38[0x10]" identifier [ number_literal ]))) ;) (while_statement "while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }" { (if_statement "if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }" { (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (if_statement "if (iVar9 == *piVar10) break;" if (parenthesized_expression "(iVar9 == *piVar10)" ( (binary_expression "iVar9 == *piVar10" identifier == (pointer_expression "*piVar10" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "piVar10 = (int *)piVar10[6];" (assignment_expression "piVar10 = (int *)piVar10[6]" identifier = (cast_expression "(int *)piVar10[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[6]" identifier [ number_literal ]))) ;) })) (expression_statement "uVar11 = *(undefined4 *)(piVar10[1] + 4);" (assignment_expression "uVar11 = *(undefined4 *)(piVar10[1] + 4)" identifier = (pointer_expression "*(undefined4 *)(piVar10[1] + 4)" * (cast_expression "(undefined4 *)(piVar10[1] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10[1] + 4)" ( (binary_expression "piVar10[1] + 4" (subscript_expression "piVar10[1]" identifier [ number_literal ]) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    uVar11 = 0;\n  }" else (compound_statement "{\n    uVar11 = 0;\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar7 = FUN_0003c520(uVar11,uVar2);" (assignment_expression "iVar7 = FUN_0003c520(uVar11,uVar2)" identifier = (call_expression "FUN_0003c520(uVar11,uVar2)" identifier (argument_list "(uVar11,uVar2)" ( identifier , identifier )))) ;) (if_statement "if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;" if (parenthesized_expression "((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0))" ( (binary_expression "(iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0" (assignment_expression "iVar7 = FUN_0003c520(0,uVar2)" identifier = (call_expression "FUN_0003c520(0,uVar2)" identifier (argument_list "(0,uVar2)" ( number_literal , identifier )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);" (assignment_expression "iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7)" identifier = (call_expression "sqlite3_strnicmp(*local_38,"sqlite_",7)" identifier (argument_list "(*local_38,"sqlite_",7)" ( (pointer_expression "*local_38" * identifier) , (string_literal ""sqlite_"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }" { (expression_statement "iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);" (assignment_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4)" identifier = (call_expression "sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4)" identifier (argument_list "(*local_38 + 7,&DAT_000ab464,4)" ( (binary_expression "*local_38 + 7" (pointer_expression "*local_38" * identifier) + number_literal) , (pointer_expression "&DAT_000ab464" & identifier) , number_literal )))) ;) (if_statement "if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;" if (parenthesized_expression "((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))" ( (binary_expression "(iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0)" ( (comma_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0" (assignment_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10)" identifier = (call_expression "sqlite3_strnicmp(*local_38 + 7,"parameters",10)" identifier (argument_list "(*local_38 + 7,"parameters",10)" ( (binary_expression "*local_38 + 7" (pointer_expression "*local_38" * identifier) + number_literal) , (string_literal ""parameters"" " string_content ") , number_literal )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a1d3c;" goto statement_identifier ;)) }) (else_clause "else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" else (if_statement "if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" if (parenthesized_expression "(((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0))))" ( (binary_expression "((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))" (parenthesized_expression "((*(byte *)((int)local_38 + 0x25) & 0x10) != 0)" ( (binary_expression "(*(byte *)((int)local_38 + 0x25) & 0x10) != 0" (parenthesized_expression "(*(byte *)((int)local_38 + 0x25) & 0x10)" ( (binary_expression "*(byte *)((int)local_38 + 0x25) & 0x10" (pointer_expression "*(byte *)((int)local_38 + 0x25)" * (cast_expression "(byte *)((int)local_38 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_38 + 0x25)" ( (binary_expression "(int)local_38 + 0x25" (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))" ( (parenthesized_expression "(((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0))" ( (binary_expression "((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)" (parenthesized_expression "((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0))" ( (binary_expression "(*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)" (binary_expression "(*(byte *)(iVar9 + 0x1f) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1f) & 0x10)" ( (binary_expression "*(byte *)(iVar9 + 0x1f) & 0x10" (pointer_expression "*(byte *)(iVar9 + 0x1f)" * (cast_expression "(byte *)(iVar9 + 0x1f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1f)" ( (binary_expression "iVar9 + 0x1f" identifier + number_literal) )))) & number_literal) )) != number_literal) && (parenthesized_expression "(*(int *)(iVar9 + 0x170) == 0)" ( (binary_expression "*(int *)(iVar9 + 0x170) == 0" (pointer_expression "*(int *)(iVar9 + 0x170)" * (cast_expression "(int *)(iVar9 + 0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x170)" ( (binary_expression "iVar9 + 0x170" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(int *)(iVar9 + 0xb4) == 0)" ( (binary_expression "*(int *)(iVar9 + 0xb4) == 0" (pointer_expression "*(int *)(iVar9 + 0xb4)" * (cast_expression "(int *)(iVar9 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xb4)" ( (binary_expression "iVar9 + 0xb4" identifier + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" { (labeled_statement "LAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);" statement_identifier : (expression_statement "FUN_0003c160(param_1,"table %s may not be dropped",*local_38);" (call_expression "FUN_0003c160(param_1,"table %s may not be dropped",*local_38)" identifier (argument_list "(param_1,"table %s may not be dropped",*local_38)" ( identifier , (string_literal ""table %s may not be dropped"" " string_content ") , (pointer_expression "*local_38" * identifier) ))) ;)) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })))) (if_statement "if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }" { (if_statement "if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38[3] != 0)" ( (binary_expression "local_38[3] != 0" (subscript_expression "local_38[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }" { (expression_statement "FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);" (call_expression "FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38)" identifier (argument_list "(param_1,"use DROP VIEW to delete view %s",*local_38)" ( identifier , (string_literal ""use DROP VIEW to delete view %s"" " string_content ") , (pointer_expression "*local_38" * identifier) ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) (if_statement "if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;" if (parenthesized_expression "((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0))" ( (binary_expression "(param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)" (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(iVar9 = FUN_000318c0(), iVar9 == 0)" ( (comma_expression "iVar9 = FUN_000318c0(), iVar9 == 0" (assignment_expression "iVar9 = FUN_000318c0()" identifier = (call_expression "FUN_000318c0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0001d64f(*local_38);" (call_expression "FUN_0001d64f(*local_38)" identifier (argument_list "(*local_38)" ( (pointer_expression "*local_38" * identifier) ))) ;) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }" if (parenthesized_expression "(((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0))" ( (binary_expression "((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)" (parenthesized_expression "((*(byte *)(local_2c + 0x1d) & 0x40) != 0)" ( (binary_expression "(*(byte *)(local_2c + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1d) & 0x40)" ( (binary_expression "*(byte *)(local_2c + 0x1d) & 0x40" (pointer_expression "*(byte *)(local_2c + 0x1d)" * (cast_expression "(byte *)(local_2c + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x1d)" ( (binary_expression "local_2c + 0x1d" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_38[0xe] == 0)" ( (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }" { (expression_statement "iVar9 = param_1[2];" (assignment_expression "iVar9 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (if_statement "if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar9 = FUN_000318c0();\n      }" { (expression_statement "iVar9 = FUN_000318c0();" (assignment_expression "iVar9 = FUN_000318c0()" identifier = (call_expression "FUN_000318c0()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "iVar7 = FUN_0001e430();" (assignment_expression "iVar7 = FUN_0001e430()" identifier = (call_expression "FUN_0001e430()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" if (parenthesized_expression "(*(int *)(iVar7 + 8) == 0)" ( (binary_expression "*(int *)(iVar7 + 8) == 0" (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }" { (expression_statement "iVar12 = extraout_ECX;" (assignment_expression "iVar12 = extraout_ECX" identifier = identifier) ;) (for_statement "for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }" for ( (assignment_expression "iVar7 = local_38[4]" identifier = (subscript_expression "local_38[4]" identifier [ number_literal ])) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = *(int *)(iVar7 + 4)" identifier = (pointer_expression "*(int *)(iVar7 + 4)" * (cast_expression "(int *)(iVar7 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ) (compound_statement "{\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }" { (if_statement "if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }" if (parenthesized_expression "((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0))" ( (binary_expression "(*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)" (parenthesized_expression "(*(char *)(iVar7 + 0x18) != '\0')" ( (binary_expression "*(char *)(iVar7 + 0x18) != '\0'" (pointer_expression "*(char *)(iVar7 + 0x18)" * (cast_expression "(char *)(iVar7 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)" ( (comma_expression "iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0" (assignment_expression "iVar12 = local_2c" identifier = identifier) , (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" ( (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" * (cast_expression "(byte *)(local_2c + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x1e)" ( (binary_expression "local_2c + 0x1e" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }" { (expression_statement "local_28 = param_1[0xe] + -1;" (assignment_expression "local_28 = param_1[0xe] + -1" identifier = (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xe] = local_28;" (assignment_expression "param_1[0xe] = local_28" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(local_28,0,iVar12,iVar12);" (call_expression "FUN_000315c0(local_28,0,iVar12,iVar12)" identifier (argument_list "(local_28,0,iVar12,iVar12)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" * (cast_expression "(undefined1 *)((int)param_1 + 0x96)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x96)" ( (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053790();" (call_expression "FUN_00053790()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00096310();" (call_expression "FUN_00096310()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" * (cast_expression "(undefined1 *)((int)param_1 + 0x96)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x96)" ( (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;" if (parenthesized_expression "((*(byte *)(local_2c + 0x1e) & 8) != 0)" ( (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" ( (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" * (cast_expression "(byte *)(local_2c + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x1e)" ( (binary_expression "local_2c + 0x1e" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000a1ffd;" goto statement_identifier ;)) (goto_statement "goto LAB_000a1fc7;" goto statement_identifier ;) })) })) }) (else_clause "else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" else (compound_statement "{\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" { (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" * (cast_expression "(undefined1 *)((int)param_1 + 0x96)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x96)" ( (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053790();" (call_expression "FUN_00053790()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00096310();" (call_expression "FUN_00096310()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" * (cast_expression "(undefined1 *)((int)param_1 + 0x96)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x96)" ( (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (if_statement "if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }" if (parenthesized_expression "((*(byte *)(local_2c + 0x1e) & 8) == 0)" ( (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) == 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" ( (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" * (cast_expression "(byte *)(local_2c + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x1e)" ( (binary_expression "local_2c + 0x1e" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }" { (labeled_statement "LAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);" statement_identifier : (expression_statement "FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);" (call_expression "FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c)" identifier (argument_list "(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c)" ( (binary_expression "*(int *)(iVar9 + 0x68) + 2" (pointer_expression "*(int *)(iVar9 + 0x68)" * (cast_expression "(int *)(iVar9 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x68)" ( (binary_expression "iVar9 + 0x68" identifier + number_literal) )))) + number_literal) , number_literal , identifier , identifier ))) ;)) (expression_statement "FUN_00032230(0,0xffffffff,4);" (call_expression "FUN_00032230(0,0xffffffff,4)" identifier (argument_list "(0,0xffffffff,4)" ( number_literal , number_literal , number_literal ))) ;) (labeled_statement "LAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }" statement_identifier : (if_statement "if (local_28 != 0) {\n            FUN_00031430();\n          }" if (parenthesized_expression "(local_28 != 0)" ( (binary_expression "local_28 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00031430();\n          }" { (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) }))) })) }))) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) }) (else_clause "else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" else (compound_statement "{\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" { (if_statement "if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }" if (parenthesized_expression "(local_38[3] == 0)" ( (binary_expression "local_38[3] == 0" (subscript_expression "local_38[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }" { (expression_statement "FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);" (call_expression "FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0)" identifier (argument_list "(param_1,"use DROP TABLE to delete table %s",*local_38,0)" ( identifier , (string_literal ""use DROP TABLE to delete table %s"" " string_content ") , (pointer_expression "*local_38" * identifier) , number_literal ))) ;) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;) })) (if_statement "if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;" if (parenthesized_expression "((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0))" ( (binary_expression "(param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)" (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(iVar9 = FUN_000318c0(), iVar9 == 0)" ( (comma_expression "iVar9 = FUN_000318c0(), iVar9 == 0" (assignment_expression "iVar9 = FUN_000318c0()" identifier = (call_expression "FUN_000318c0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_000a1878;" goto statement_identifier ;)) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }))) (expression_statement "puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));" (assignment_expression "puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10))" identifier = (cast_expression "(undefined4 *)(local_30 + *(int *)(local_2c + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + *(int *)(local_2c + 0x10))" ( (binary_expression "local_30 + *(int *)(local_2c + 0x10)" identifier + (pointer_expression "*(int *)(local_2c + 0x10)" * (cast_expression "(int *)(local_2c + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x10)" ( (binary_expression "local_2c + 0x10" identifier + number_literal) ))))) )))) ;) (if_statement "if (param_1[2] == 0) {\n    FUN_000318c0();\n  }" if (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    FUN_000318c0();\n  }" { (expression_statement "FUN_000318c0();" (call_expression "FUN_000318c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }" if (parenthesized_expression "(local_38[0xe] != 0)" ( (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }" { (expression_statement "FUN_000315c0(0,0,extraout_EDX,extraout_EDX);" (call_expression "FUN_000315c0(0,0,extraout_EDX,extraout_EDX)" identifier (argument_list "(0,0,extraout_EDX,extraout_EDX)" ( number_literal , number_literal , identifier , identifier ))) ;) })) (for_statement "for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }" for ( (assignment_expression "iVar9 = FUN_0002ac70()" identifier = (call_expression "FUN_0002ac70()" identifier (argument_list "()" ( )))) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = *(int *)(iVar9 + 0x20)" identifier = (pointer_expression "*(int *)(iVar9 + 0x20)" * (cast_expression "(int *)(iVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) ))))) ) (compound_statement "{\n    FUN_000a1690();\n  }" { (expression_statement "FUN_000a1690();" (call_expression "FUN_000a1690()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar9 = *local_38;" (assignment_expression "iVar9 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (expression_statement "piVar10 = (int *)*puVar8;" (assignment_expression "piVar10 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }" if (parenthesized_expression "((*(byte *)(local_38 + 9) & 8) != 0)" ( (binary_expression "(*(byte *)(local_38 + 9) & 8) != 0" (parenthesized_expression "(*(byte *)(local_38 + 9) & 8)" ( (binary_expression "*(byte *)(local_38 + 9) & 8" (pointer_expression "*(byte *)(local_38 + 9)" * (cast_expression "(byte *)(local_38 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 9)" ( (binary_expression "local_38 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }" { (expression_statement "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);" (call_expression "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9)" identifier (argument_list "(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9)" ( identifier , (string_literal ""DELETE FROM %Q.sqlite_sequence WHERE name=%Q"" " string_content ") , identifier , identifier ))) ;) (expression_statement "iVar9 = *local_38;" (assignment_expression "iVar9 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (expression_statement "piVar10 = (int *)*puVar8;" (assignment_expression "piVar10 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) })) (expression_statement "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);" (call_expression "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9)" identifier (argument_list "(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9)" ( identifier , (string_literal ""DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'"" " string_content escape_sequence string_content escape_sequence ") , identifier , identifier ))) ;) (if_statement "if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }" { (if_statement "if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }" if (parenthesized_expression "(local_38[0xe] == 0)" ( (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }" { (expression_statement "uVar3 = local_38[7];" (assignment_expression "uVar3 = local_38[7]" identifier = (subscript_expression "local_38[7]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }" { (expression_statement "iVar9 = local_38[2];" (assignment_expression "iVar9 = local_38[2]" identifier = (subscript_expression "local_38[2]" identifier [ number_literal ])) ;) (expression_statement "local_40 = uVar3;" (assignment_expression "local_40 = uVar3" identifier = identifier) ;) (if_statement "if (uVar3 < uVar13) goto joined_r0x000a1f5d;" if (parenthesized_expression "(uVar3 < uVar13)" ( (binary_expression "uVar3 < uVar13" identifier < identifier) )) (goto_statement "goto joined_r0x000a1f5d;" goto statement_identifier ;)) (if_statement "if (uVar13 == 0) goto joined_r0x000a1f5d;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x000a1f5d;" goto statement_identifier ;)) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);" do (compound_statement "{\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        }" { (expression_statement "uVar4 = *(uint *)(iVar9 + 0x2c);" (assignment_expression "uVar4 = *(uint *)(iVar9 + 0x2c)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x2c)" * (cast_expression "(uint *)(iVar9 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2c)" ( (binary_expression "iVar9 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = local_40;" (assignment_expression "uVar6 = local_40" identifier = identifier) ;) (if_statement "if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }" if (parenthesized_expression "((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40))" ( (binary_expression "(uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)" (parenthesized_expression "(uVar13 == 0 || uVar4 < uVar13)" ( (binary_expression "uVar13 == 0 || uVar4 < uVar13" (binary_expression "uVar13 == 0" identifier == number_literal) || (binary_expression "uVar4 < uVar13" identifier < identifier)) )) && (parenthesized_expression "(uVar6 = uVar4, uVar4 <= local_40)" ( (comma_expression "uVar6 = uVar4, uVar4 <= local_40" (assignment_expression "uVar6 = uVar4" identifier = identifier) , (binary_expression "uVar4 <= local_40" identifier <= identifier)) ))) )) (compound_statement "{\n            uVar6 = local_40;\n          }" { (expression_statement "uVar6 = local_40;" (assignment_expression "uVar6 = local_40" identifier = identifier) ;) })) (expression_statement "local_40 = uVar6;" (assignment_expression "local_40 = uVar6" identifier = identifier) ;) (expression_statement "iVar9 = *(int *)(iVar9 + 0x14);" (assignment_expression "iVar9 = *(int *)(iVar9 + 0x14)" identifier = (pointer_expression "*(int *)(iVar9 + 0x14)" * (cast_expression "(int *)(iVar9 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14)" ( (binary_expression "iVar9 + 0x14" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x000a1f5d:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (if_statement "if (local_40 == 0) break;" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }" if (parenthesized_expression "(local_38[0x12] != 0)" ( (binary_expression "local_38[0x12] != 0" (subscript_expression "local_38[0x12]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          FUN_0002a630();\n        }" { (expression_statement "FUN_0002a630();" (call_expression "FUN_0002a630()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0001d6fd();" (call_expression "FUN_0001d6fd()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar13 = local_40;" (assignment_expression "uVar13 = local_40" identifier = identifier) ;) })) (goto_statement "goto LAB_000a1d8c;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);" statement_identifier : (expression_statement "FUN_000315c0(0,0,local_38,local_38);" (call_expression "FUN_000315c0(0,0,local_38,local_38)" identifier (argument_list "(0,0,local_38,local_38)" ( number_literal , number_literal , identifier , identifier ))) ;)) (expression_statement "FUN_00032090(0);" (call_expression "FUN_00032090(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "piVar10 = (int *)param_1[0x1d];" (assignment_expression "piVar10 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }" if (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" ( (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar10 = param_1;\n    }" { (expression_statement "piVar10 = param_1;" (assignment_expression "piVar10 = param_1" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)((int)piVar10 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar10 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar10 + 0x15)" * (cast_expression "(undefined1 *)((int)piVar10 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x15)" ( (binary_expression "(int)piVar10 + 0x15" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar10 = local_38;" (assignment_expression "piVar10 = local_38" identifier = identifier) ;) }) (else_clause "else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" else (compound_statement "{\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" { (labeled_statement "LAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;" statement_identifier : (if_statement "if (local_38[0xe] != 0) goto LAB_000a1af5;" if (parenthesized_expression "(local_38[0xe] != 0)" ( (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000a1af5;" goto statement_identifier ;))) }))) (expression_statement "FUN_000315c0(0,0,piVar10);" (call_expression "FUN_000315c0(0,0,piVar10)" identifier (argument_list "(0,0,piVar10)" ( number_literal , number_literal , identifier ))) ;) (expression_statement "FUN_00032090(0);" (call_expression "FUN_00032090(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "FUN_00031940();" (call_expression "FUN_00031940()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar9 = *(int *)(local_2c + 0x10);" (assignment_expression "iVar9 = *(int *)(local_2c + 0x10)" identifier = (pointer_expression "*(int *)(local_2c + 0x10)" * (cast_expression "(int *)(local_2c + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x10)" ( (binary_expression "local_2c + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar9 + 0xc + local_30);" (assignment_expression "iVar7 = *(int *)(iVar9 + 0xc + local_30)" identifier = (pointer_expression "*(int *)(iVar9 + 0xc + local_30)" * (cast_expression "(int *)(iVar9 + 0xc + local_30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc + local_30)" ( (binary_expression "iVar9 + 0xc + local_30" (binary_expression "iVar9 + 0xc" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }" if (parenthesized_expression "((*(byte *)(iVar7 + 0x4e) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar7 + 0x4e) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x4e) & 2)" ( (binary_expression "*(byte *)(iVar7 + 0x4e) & 2" (pointer_expression "*(byte *)(iVar7 + 0x4e)" * (cast_expression "(byte *)(iVar7 + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4e)" ( (binary_expression "iVar7 + 0x4e" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }" { (expression_statement "piVar10 = *(int **)(iVar7 + 0x10);" (assignment_expression "piVar10 = *(int **)(iVar7 + 0x10)" identifier = (pointer_expression "*(int **)(iVar7 + 0x10)" * (cast_expression "(int **)(iVar7 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }" { (do_statement "do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);" do (compound_statement "{\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      }" { (expression_statement "iVar9 = piVar10[2];" (assignment_expression "iVar9 = piVar10[2]" identifier = (subscript_expression "piVar10[2]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }" if (parenthesized_expression "(*(int *)(iVar9 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar9 + 0xc) != 0" (pointer_expression "*(int *)(iVar9 + 0xc)" * (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }" { (expression_statement "FUN_00043d50();" (call_expression "FUN_00043d50()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(iVar9 + 4) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 4) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 4)" * (cast_expression "(undefined4 *)(iVar9 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar9 + 0x2a) = 0;" (assignment_expression "*(undefined2 *)(iVar9 + 0x2a) = 0" (pointer_expression "*(undefined2 *)(iVar9 + 0x2a)" * (cast_expression "(undefined2 *)(iVar9 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2a)" ( (binary_expression "iVar9 + 0x2a" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "piVar10 = (int *)*piVar10;" (assignment_expression "piVar10 = (int *)*piVar10" identifier = (cast_expression "(int *)*piVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) }) while (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar9 = *(int *)(local_2c + 0x10);" (assignment_expression "iVar9 = *(int *)(local_2c + 0x10)" identifier = (pointer_expression "*(int *)(local_2c + 0x10)" * (cast_expression "(int *)(local_2c + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x10)" ( (binary_expression "local_2c + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);" (assignment_expression "puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" identifier = (cast_expression "(ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" ( (binary_expression "*(int *)(iVar9 + 0xc + local_30) + 0x4e" (pointer_expression "*(int *)(iVar9 + 0xc + local_30)" * (cast_expression "(int *)(iVar9 + 0xc + local_30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc + local_30)" ( (binary_expression "iVar9 + 0xc + local_30" (binary_expression "iVar9 + 0xc" identifier + number_literal) + identifier) )))) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 & 0xfffd;" (assignment_expression "*puVar1 = *puVar1 & 0xfffd" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 & 0xfffd" (pointer_expression "*puVar1" * identifier) & number_literal)) ;) })) (labeled_statement "LAB_000a1878:\n  FUN_00043120();" statement_identifier : (expression_statement "FUN_00043120();" (call_expression "FUN_00043120()" identifier (argument_list "()" ( ))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (string_literal " string_content ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) , (string_literal " string_content ") , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_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) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (pointer_expression * IDENT) ))) ;)) (goto_statement goto statement_identifier ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (pointer_expression * IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (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 { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (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) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (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 { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , IDENT , IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , LIT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (pointer_expression * IDENT) , LIT ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))) ;) })) (for_statement for ( (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (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 { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence string_content escape_sequence ") , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT < IDENT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;))) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (if_statement if (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 { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  ushort *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int *piVar10;\n  undefined4 uVar11;\n  int extraout_ECX;\n  int iVar12;\n  undefined4 extraout_EDX;\n  uint uVar13;\n  uint local_40;\n  int *local_38;\n  int local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar9 = *param_1;\n  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;\n  if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }\n  if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }\n  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);\n  iVar7 = FUN_0003c520(0,uVar2);\n  if (iVar7 != 0) goto LAB_000a1878;\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }\n  iVar7 = FUN_0003c520(uVar11,uVar2);\n  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }\n  if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }\n  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));\n  if (param_1[2] == 0) {\n    FUN_000318c0();\n  }\n  FUN_0006dd90();\n  if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }\n  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }\n  iVar9 = *local_38;\n  piVar10 = (int *)*puVar8;\n  if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }\n  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }\n  FUN_000315c0(0,0,piVar10);\n  FUN_00032090(0);\n  FUN_00031940();\n  iVar9 = *(int *)(local_2c + 0x10);\n  iVar7 = *(int *)(iVar9 + 0xc + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  FUN_00043120();\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000a1850(int *param_1,undefined4 param_2,int param_3,int param_4)" (identifier "FUN_000a1850") (parameter_list "(int *param_1,undefined4 param_2,int param_3,int param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  ushort *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int *piVar10;\n  undefined4 uVar11;\n  int extraout_ECX;\n  int iVar12;\n  undefined4 extraout_EDX;\n  uint uVar13;\n  uint local_40;\n  int *local_38;\n  int local_30;\n  int local_2c;\n  int local_28;\n  \n  iVar9 = *param_1;\n  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;\n  if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }\n  if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }\n  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);\n  iVar7 = FUN_0003c520(0,uVar2);\n  if (iVar7 != 0) goto LAB_000a1878;\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }\n  iVar7 = FUN_0003c520(uVar11,uVar2);\n  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;\n  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);\n  if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }\n  if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }\n  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));\n  if (param_1[2] == 0) {\n    FUN_000318c0();\n  }\n  FUN_0006dd90();\n  if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }\n  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }\n  iVar9 = *local_38;\n  piVar10 = (int *)*puVar8;\n  if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }\n  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);\n  if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }\n  FUN_000315c0(0,0,piVar10);\n  FUN_00032090(0);\n  FUN_00031940();\n  iVar9 = *(int *)(local_2c + 0x10);\n  iVar7 = *(int *)(iVar9 + 0xc + local_30);\n  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }\nLAB_000a1878:\n  FUN_00043120();\n  return;\n}" ({ "{") (declaration "ushort *puVar1;" (type_identifier "ushort") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined4 extraout_EDX;" (type_identifier "undefined4") (identifier "extraout_EDX") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "int *local_38;" (primitive_type "int") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (expression_statement "iVar9 = *param_1;" (assignment_expression "iVar9 = *param_1" (identifier "iVar9") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;" (if "if") (parenthesized_expression "((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0))" (( "(") (binary_expression "(*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)" (parenthesized_expression "(*(char *)(iVar9 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar9 + 0x4d)" (* "*") (cast_expression "(char *)(iVar9 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x4d)" (( "(") (binary_expression "iVar9 + 0x4d" (identifier "iVar9") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(iVar7 = FUN_0008f690(), iVar7 != 0)" (( "(") (comma_expression "iVar7 = FUN_0008f690(), iVar7 != 0" (assignment_expression "iVar7 = FUN_0008f690()" (identifier "iVar7") (= "=") (call_expression "FUN_0008f690()" (identifier "FUN_0008f690") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";"))) (if_statement "if (param_4 == 0) {\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }\n  else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_38 = (int *)FUN_0008ffe0();\n    if (local_38 == (int *)0x0) goto LAB_000a1878;\n  }" ({ "{") (expression_statement "local_38 = (int *)FUN_0008ffe0();" (assignment_expression "local_38 = (int *)FUN_0008ffe0()" (identifier "local_38") (= "=") (cast_expression "(int *)FUN_0008ffe0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008ffe0()" (identifier "FUN_0008ffe0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (local_38 == (int *)0x0) goto LAB_000a1878;" (if "if") (parenthesized_expression "(local_38 == (int *)0x0)" (( "(") (binary_expression "local_38 == (int *)0x0" (identifier "local_38") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";"))) (} "}")) (else_clause "else {\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" (else "else") (compound_statement "{\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';\n    local_38 = (int *)FUN_0008ffe0();\n    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;\n    if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }\n  }" ({ "{") (expression_statement "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';" (assignment_expression "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01'" (pointer_expression "*(char *)(iVar9 + 0x51)" (* "*") (cast_expression "(char *)(iVar9 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x51)" (( "(") (binary_expression "iVar9 + 0x51" (identifier "iVar9") (+ "+") (number_literal "0x51")) () ")")))) (= "=") (binary_expression "*(char *)(iVar9 + 0x51) + '\x01'" (pointer_expression "*(char *)(iVar9 + 0x51)" (* "*") (cast_expression "(char *)(iVar9 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x51)" (( "(") (binary_expression "iVar9 + 0x51" (identifier "iVar9") (+ "+") (number_literal "0x51")) () ")")))) (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (expression_statement "local_38 = (int *)FUN_0008ffe0();" (assignment_expression "local_38 = (int *)FUN_0008ffe0()" (identifier "local_38") (= "=") (cast_expression "(int *)FUN_0008ffe0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008ffe0()" (identifier "FUN_0008ffe0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;" (assignment_expression "*(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1" (pointer_expression "*(char *)(iVar9 + 0x51)" (* "*") (cast_expression "(char *)(iVar9 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x51)" (( "(") (binary_expression "iVar9 + 0x51" (identifier "iVar9") (+ "+") (number_literal "0x51")) () ")")))) (= "=") (binary_expression "*(char *)(iVar9 + 0x51) + -1" (pointer_expression "*(char *)(iVar9 + 0x51)" (* "*") (cast_expression "(char *)(iVar9 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x51)" (( "(") (binary_expression "iVar9 + 0x51" (identifier "iVar9") (+ "+") (number_literal "0x51")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (local_38 == (int *)0x0) {\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }" (if "if") (parenthesized_expression "(local_38 == (int *)0x0)" (( "(") (binary_expression "local_38 == (int *)0x0" (identifier "local_38") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      FUN_0006ddc0();\n      goto LAB_000a1878;\n    }" ({ "{") (expression_statement "FUN_0006ddc0();" (call_expression "FUN_0006ddc0()" (identifier "FUN_0006ddc0") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";")) (} "}"))) (} "}")))) (if_statement "if (local_38[0x12] == 0) {\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }\n  else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" (if "if") (parenthesized_expression "(local_38[0x12] == 0)" (( "(") (binary_expression "local_38[0x12] == 0" (subscript_expression "local_38[0x12]" (identifier "local_38") ([ "[") (number_literal "0x12") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = -0x80000;\n  }" ({ "{") (if_statement "if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;" (if "if") (parenthesized_expression "((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0))" (( "(") (binary_expression "(local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)" (parenthesized_expression "(local_38[0xe] != 0)" (( "(") (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" (identifier "local_38") ([ "[") (number_literal "0xe") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = FUN_00083c60(), iVar7 != 0)" (( "(") (comma_expression "iVar7 = FUN_00083c60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00083c60()" (identifier "iVar7") (= "=") (call_expression "FUN_00083c60()" (identifier "FUN_00083c60") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";"))) (expression_statement "local_30 = -0x80000;" (assignment_expression "local_30 = -0x80000" (identifier "local_30") (= "=") (number_literal "-0x80000")) (; ";")) (} "}")) (else_clause "else {\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" (else "else") (compound_statement "{\n    local_30 = FUN_0002a630();\n    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;\n    local_30 = local_30 << 4;\n  }" ({ "{") (expression_statement "local_30 = FUN_0002a630();" (assignment_expression "local_30 = FUN_0002a630()" (identifier "local_30") (= "=") (call_expression "FUN_0002a630()" (identifier "FUN_0002a630") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;" (if "if") (parenthesized_expression "((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0))" (( "(") (binary_expression "(local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)" (parenthesized_expression "(local_38[0xe] != 0)" (( "(") (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" (identifier "local_38") ([ "[") (number_literal "0xe") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = FUN_00083c60(), iVar7 != 0)" (( "(") (comma_expression "iVar7 = FUN_00083c60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00083c60()" (identifier "iVar7") (= "=") (call_expression "FUN_00083c60()" (identifier "FUN_00083c60") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";"))) (expression_statement "local_30 = local_30 << 4;" (assignment_expression "local_30 = local_30 << 4" (identifier "local_30") (= "=") (binary_expression "local_30 << 4" (identifier "local_30") (<< "<<") (number_literal "4"))) (; ";")) (} "}")))) (expression_statement "uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);" (assignment_expression "uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar9 + 0x10) + local_30)" (( "(") (binary_expression "*(int *)(iVar9 + 0x10) + local_30" (pointer_expression "*(int *)(iVar9 + 0x10)" (* "*") (cast_expression "(int *)(iVar9 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x10)" (( "(") (binary_expression "iVar9 + 0x10" (identifier "iVar9") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "local_30")) () ")"))))) (; ";")) (expression_statement "iVar7 = FUN_0003c520(0,uVar2);" (assignment_expression "iVar7 = FUN_0003c520(0,uVar2)" (identifier "iVar7") (= "=") (call_expression "FUN_0003c520(0,uVar2)" (identifier "FUN_0003c520") (argument_list "(0,uVar2)" (( "(") (number_literal "0") (, ",") (identifier "uVar2") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_000a1878;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";"))) (if_statement "if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }\n  else {\n    uVar11 = 0;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }\n  }" ({ "{") (if_statement "if (local_38[0xe] == 0) {\n      uVar11 = 0;\n    }\n    else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" (if "if") (parenthesized_expression "(local_38[0xe] == 0)" (( "(") (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" (identifier "local_38") ([ "[") (number_literal "0xe") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = 0;\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" (else "else") (compound_statement "{\n      piVar10 = (int *)local_38[0x10];\n      while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }\n      uVar11 = *(undefined4 *)(piVar10[1] + 4);\n    }" ({ "{") (expression_statement "piVar10 = (int *)local_38[0x10];" (assignment_expression "piVar10 = (int *)local_38[0x10]" (identifier "piVar10") (= "=") (cast_expression "(int *)local_38[0x10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_38[0x10]" (identifier "local_38") ([ "[") (number_literal "0x10") (] "]")))) (; ";")) (while_statement "while( true ) {\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }\n        if (iVar9 == *piVar10) break;\n        piVar10 = (int *)piVar10[6];\n      }" ({ "{") (if_statement "if (piVar10 == (int *)0x0) {\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }" (if "if") (parenthesized_expression "(piVar10 == (int *)0x0)" (( "(") (binary_expression "piVar10 == (int *)0x0" (identifier "piVar10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n          pcVar5 = (code *)invalidInstructionException();\n          (*pcVar5)();\n        }" ({ "{") (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" (identifier "pcVar5") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar9 == *piVar10) break;" (if "if") (parenthesized_expression "(iVar9 == *piVar10)" (( "(") (binary_expression "iVar9 == *piVar10" (identifier "iVar9") (== "==") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar10 = (int *)piVar10[6];" (assignment_expression "piVar10 = (int *)piVar10[6]" (identifier "piVar10") (= "=") (cast_expression "(int *)piVar10[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[6]" (identifier "piVar10") ([ "[") (number_literal "6") (] "]")))) (; ";")) (} "}"))) (expression_statement "uVar11 = *(undefined4 *)(piVar10[1] + 4);" (assignment_expression "uVar11 = *(undefined4 *)(piVar10[1] + 4)" (identifier "uVar11") (= "=") (pointer_expression "*(undefined4 *)(piVar10[1] + 4)" (* "*") (cast_expression "(undefined4 *)(piVar10[1] + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar10[1] + 4)" (( "(") (binary_expression "piVar10[1] + 4" (subscript_expression "piVar10[1]" (identifier "piVar10") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    uVar11 = 0;\n  }" (else "else") (compound_statement "{\n    uVar11 = 0;\n  }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "iVar7 = FUN_0003c520(uVar11,uVar2);" (assignment_expression "iVar7 = FUN_0003c520(uVar11,uVar2)" (identifier "iVar7") (= "=") (call_expression "FUN_0003c520(uVar11,uVar2)" (identifier "FUN_0003c520") (argument_list "(uVar11,uVar2)" (( "(") (identifier "uVar11") (, ",") (identifier "uVar2") () ")")))) (; ";")) (if_statement "if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;" (if "if") (parenthesized_expression "((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0))" (( "(") (binary_expression "(iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)" (( "(") (comma_expression "iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0" (assignment_expression "iVar7 = FUN_0003c520(0,uVar2)" (identifier "iVar7") (= "=") (call_expression "FUN_0003c520(0,uVar2)" (identifier "FUN_0003c520") (argument_list "(0,uVar2)" (( "(") (number_literal "0") (, ",") (identifier "uVar2") () ")")))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";"))) (expression_statement "iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);" (assignment_expression "iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7)" (identifier "iVar7") (= "=") (call_expression "sqlite3_strnicmp(*local_38,"sqlite_",7)" (identifier "sqlite3_strnicmp") (argument_list "(*local_38,"sqlite_",7)" (( "(") (pointer_expression "*local_38" (* "*") (identifier "local_38")) (, ",") (string_literal ""sqlite_"" (" """) (string_content "sqlite_") (" """)) (, ",") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar7 == 0) {\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }\n  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);\n    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;\n  }" ({ "{") (expression_statement "iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);" (assignment_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4)" (identifier "iVar9") (= "=") (call_expression "sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4)" (identifier "sqlite3_strnicmp") (argument_list "(*local_38 + 7,&DAT_000ab464,4)" (( "(") (binary_expression "*local_38 + 7" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (+ "+") (number_literal "7")) (, ",") (pointer_expression "&DAT_000ab464" (& "&") (identifier "DAT_000ab464")) (, ",") (number_literal "4") () ")")))) (; ";")) (if_statement "if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))\n    goto LAB_000a1d3c;" (if "if") (parenthesized_expression "((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))" (( "(") (binary_expression "(iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0)" (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0)" (( "(") (comma_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0" (assignment_expression "iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10)" (identifier "iVar9") (= "=") (call_expression "sqlite3_strnicmp(*local_38 + 7,"parameters",10)" (identifier "sqlite3_strnicmp") (argument_list "(*local_38 + 7,"parameters",10)" (( "(") (binary_expression "*local_38 + 7" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (+ "+") (number_literal "7")) (, ",") (string_literal ""parameters"" (" """) (string_content "parameters") (" """)) (, ",") (number_literal "10") () ")")))) (, ",") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000a1d3c;" (goto "goto") (statement_identifier "LAB_000a1d3c") (; ";"))) (} "}")) (else_clause "else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" (else "else") (if_statement "if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))) {\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" (if "if") (parenthesized_expression "(((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0))))" (( "(") (binary_expression "((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&\n          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))" (parenthesized_expression "((*(byte *)((int)local_38 + 0x25) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)((int)local_38 + 0x25) & 0x10) != 0" (parenthesized_expression "(*(byte *)((int)local_38 + 0x25) & 0x10)" (( "(") (binary_expression "*(byte *)((int)local_38 + 0x25) & 0x10" (pointer_expression "*(byte *)((int)local_38 + 0x25)" (* "*") (cast_expression "(byte *)((int)local_38 + 0x25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_38 + 0x25)" (( "(") (binary_expression "(int)local_38 + 0x25" (cast_expression "(int)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_38")) (+ "+") (number_literal "0x25")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)))" (( "(") (parenthesized_expression "(((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0))" (( "(") (binary_expression "((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&\n           (*(int *)(iVar9 + 0xb4) == 0)" (parenthesized_expression "((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0))" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)" (binary_expression "(*(byte *)(iVar9 + 0x1f) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1f) & 0x10)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x1f) & 0x10" (pointer_expression "*(byte *)(iVar9 + 0x1f)" (* "*") (cast_expression "(byte *)(iVar9 + 0x1f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x1f)" (( "(") (binary_expression "iVar9 + 0x1f" (identifier "iVar9") (+ "+") (number_literal "0x1f")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(int *)(iVar9 + 0x170) == 0)" (( "(") (binary_expression "*(int *)(iVar9 + 0x170) == 0" (pointer_expression "*(int *)(iVar9 + 0x170)" (* "*") (cast_expression "(int *)(iVar9 + 0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x170)" (( "(") (binary_expression "iVar9 + 0x170" (identifier "iVar9") (+ "+") (number_literal "0x170")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar9 + 0xb4) == 0)" (( "(") (binary_expression "*(int *)(iVar9 + 0xb4) == 0" (pointer_expression "*(int *)(iVar9 + 0xb4)" (* "*") (cast_expression "(int *)(iVar9 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xb4)" (( "(") (binary_expression "iVar9 + 0xb4" (identifier "iVar9") (+ "+") (number_literal "0xb4")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\nLAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);\n    goto LAB_000a1878;\n  }" ({ "{") (labeled_statement "LAB_000a1d3c:\n    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);" (statement_identifier "LAB_000a1d3c") (: ":") (expression_statement "FUN_0003c160(param_1,"table %s may not be dropped",*local_38);" (call_expression "FUN_0003c160(param_1,"table %s may not be dropped",*local_38)" (identifier "FUN_0003c160") (argument_list "(param_1,"table %s may not be dropped",*local_38)" (( "(") (identifier "param_1") (, ",") (string_literal ""table %s may not be dropped"" (" """) (string_content "table %s may not be dropped") (" """)) (, ",") (pointer_expression "*local_38" (* "*") (identifier "local_38")) () ")"))) (; ";"))) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";")) (} "}"))))) (if_statement "if (param_3 == 0) {\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }\n  else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    FUN_0001d64f(*local_38);\n    local_2c = *param_1;\n    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }\n  }" ({ "{") (if_statement "if (local_38[3] != 0) {\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }" (if "if") (parenthesized_expression "(local_38[3] != 0)" (( "(") (binary_expression "local_38[3] != 0" (subscript_expression "local_38[3]" (identifier "local_38") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);\n      goto LAB_000a1878;\n    }" ({ "{") (expression_statement "FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);" (call_expression "FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38)" (identifier "FUN_0003c160") (argument_list "(param_1,"use DROP VIEW to delete view %s",*local_38)" (( "(") (identifier "param_1") (, ",") (string_literal ""use DROP VIEW to delete view %s"" (" """) (string_content "use DROP VIEW to delete view %s") (" """)) (, ",") (pointer_expression "*local_38" (* "*") (identifier "local_38")) () ")"))) (; ";")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";")) (} "}"))) (if_statement "if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;" (if "if") (parenthesized_expression "((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0))" (( "(") (binary_expression "(param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)" (parenthesized_expression "(param_1[2] == 0)" (( "(") (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = FUN_000318c0(), iVar9 == 0)" (( "(") (comma_expression "iVar9 = FUN_000318c0(), iVar9 == 0" (assignment_expression "iVar9 = FUN_000318c0()" (identifier "iVar9") (= "=") (call_expression "FUN_000318c0()" (identifier "FUN_000318c0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";"))) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" (identifier "FUN_0006dd90") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0001d64f(*local_38);" (call_expression "FUN_0001d64f(*local_38)" (identifier "FUN_0001d64f") (argument_list "(*local_38)" (( "(") (pointer_expression "*local_38" (* "*") (identifier "local_38")) () ")"))) (; ";")) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" (identifier "local_2c") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }" (if "if") (parenthesized_expression "(((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0))" (( "(") (binary_expression "((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)" (parenthesized_expression "((*(byte *)(local_2c + 0x1d) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(local_2c + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1d) & 0x40)" (( "(") (binary_expression "*(byte *)(local_2c + 0x1d) & 0x40" (pointer_expression "*(byte *)(local_2c + 0x1d)" (* "*") (cast_expression "(byte *)(local_2c + 0x1d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x1d)" (( "(") (binary_expression "local_2c + 0x1d" (identifier "local_2c") (+ "+") (number_literal "0x1d")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_38[0xe] == 0)" (( "(") (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" (identifier "local_38") ([ "[") (number_literal "0xe") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      iVar9 = param_1[2];\n      if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }\n      iVar7 = FUN_0001e430();\n      if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }\n      local_2c = *param_1;\n    }" ({ "{") (expression_statement "iVar9 = param_1[2];" (assignment_expression "iVar9 = param_1[2]" (identifier "iVar9") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (iVar9 == 0) {\n        iVar9 = FUN_000318c0();\n      }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar9 = FUN_000318c0();\n      }" ({ "{") (expression_statement "iVar9 = FUN_000318c0();" (assignment_expression "iVar9 = FUN_000318c0()" (identifier "iVar9") (= "=") (call_expression "FUN_000318c0()" (identifier "FUN_000318c0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (expression_statement "iVar7 = FUN_0001e430();" (assignment_expression "iVar7 = FUN_0001e430()" (identifier "iVar7") (= "=") (call_expression "FUN_0001e430()" (identifier "FUN_0001e430") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*(int *)(iVar7 + 8) == 0) {\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }\n      else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar7 + 8) == 0)" (( "(") (binary_expression "*(int *)(iVar7 + 8) == 0" (pointer_expression "*(int *)(iVar7 + 8)" (* "*") (cast_expression "(int *)(iVar7 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar12 = extraout_ECX;\n        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }\n      }" ({ "{") (expression_statement "iVar12 = extraout_ECX;" (assignment_expression "iVar12 = extraout_ECX" (identifier "iVar12") (= "=") (identifier "extraout_ECX")) (; ";")) (for_statement "for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }" (for "for") (( "(") (assignment_expression "iVar7 = local_38[4]" (identifier "iVar7") (= "=") (subscript_expression "local_38[4]" (identifier "local_38") ([ "[") (number_literal "4") (] "]"))) (; ";") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar7 = *(int *)(iVar7 + 4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar7 + 4)" (* "*") (cast_expression "(int *)(iVar7 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) () ")") (compound_statement "{\n          if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }\n        }" ({ "{") (if_statement "if ((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }" (if "if") (parenthesized_expression "((*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0))" (( "(") (binary_expression "(*(char *)(iVar7 + 0x18) != '\0') ||\n             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)" (parenthesized_expression "(*(char *)(iVar7 + 0x18) != '\0')" (( "(") (binary_expression "*(char *)(iVar7 + 0x18) != '\0'" (pointer_expression "*(char *)(iVar7 + 0x18)" (* "*") (cast_expression "(char *)(iVar7 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x18)" (( "(") (binary_expression "iVar7 + 0x18" (identifier "iVar7") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)" (( "(") (comma_expression "iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0" (assignment_expression "iVar12 = local_2c" (identifier "iVar12") (= "=") (identifier "local_2c")) (, ",") (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" (( "(") (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" (* "*") (cast_expression "(byte *)(local_2c + 0x1e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x1e)" (( "(") (binary_expression "local_2c + 0x1e" (identifier "local_2c") (+ "+") (number_literal "0x1e")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n            local_28 = param_1[0xe] + -1;\n            param_1[0xe] = local_28;\n            FUN_000315c0(local_28,0,iVar12,iVar12);\n            *(undefined1 *)((int)param_1 + 0x96) = 1;\n            FUN_00053790();\n            FUN_00096310();\n            *(undefined1 *)((int)param_1 + 0x96) = 0;\n            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;\n            goto LAB_000a1fc7;\n          }" ({ "{") (expression_statement "local_28 = param_1[0xe] + -1;" (assignment_expression "local_28 = param_1[0xe] + -1" (identifier "local_28") (= "=") (binary_expression "param_1[0xe] + -1" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1[0xe] = local_28;" (assignment_expression "param_1[0xe] = local_28" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "FUN_000315c0(local_28,0,iVar12,iVar12);" (call_expression "FUN_000315c0(local_28,0,iVar12,iVar12)" (identifier "FUN_000315c0") (argument_list "(local_28,0,iVar12,iVar12)" (( "(") (identifier "local_28") (, ",") (number_literal "0") (, ",") (identifier "iVar12") (, ",") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x96)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x96)" (( "(") (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x96")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00053790();" (call_expression "FUN_00053790()" (identifier "FUN_00053790") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00096310();" (call_expression "FUN_00096310()" (identifier "FUN_00096310") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x96)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x96)" (( "(") (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x96")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;" (if "if") (parenthesized_expression "((*(byte *)(local_2c + 0x1e) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) != 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" (( "(") (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" (* "*") (cast_expression "(byte *)(local_2c + 0x1e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x1e)" (( "(") (binary_expression "local_2c + 0x1e" (identifier "local_2c") (+ "+") (number_literal "0x1e")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a1ffd;" (goto "goto") (statement_identifier "LAB_000a1ffd") (; ";"))) (goto_statement "goto LAB_000a1fc7;" (goto "goto") (statement_identifier "LAB_000a1fc7") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" (else "else") (compound_statement "{\n        *(undefined1 *)((int)param_1 + 0x96) = 1;\n        FUN_00053790();\n        FUN_00096310();\n        *(undefined1 *)((int)param_1 + 0x96) = 0;\n        local_28 = 0;\n        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }\n      }" ({ "{") (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x96)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x96)" (( "(") (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x96")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00053790();" (call_expression "FUN_00053790()" (identifier "FUN_00053790") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00096310();" (call_expression "FUN_00096310()" (identifier "FUN_00096310") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x96) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x96) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x96)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x96)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x96)" (( "(") (binary_expression "(int)param_1 + 0x96" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x96")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }" (if "if") (parenthesized_expression "((*(byte *)(local_2c + 0x1e) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(local_2c + 0x1e) & 8) == 0" (parenthesized_expression "(*(byte *)(local_2c + 0x1e) & 8)" (( "(") (binary_expression "*(byte *)(local_2c + 0x1e) & 8" (pointer_expression "*(byte *)(local_2c + 0x1e)" (* "*") (cast_expression "(byte *)(local_2c + 0x1e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x1e)" (( "(") (binary_expression "local_2c + 0x1e" (identifier "local_2c") (+ "+") (number_literal "0x1e")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);\n          FUN_00032230(0,0xffffffff,4);\nLAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }\n        }" ({ "{") (labeled_statement "LAB_000a1fc7:\n          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);" (statement_identifier "LAB_000a1fc7") (: ":") (expression_statement "FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);" (call_expression "FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c)" (identifier "FUN_000315c0") (argument_list "(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c)" (( "(") (binary_expression "*(int *)(iVar9 + 0x68) + 2" (pointer_expression "*(int *)(iVar9 + 0x68)" (* "*") (cast_expression "(int *)(iVar9 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x68)" (( "(") (binary_expression "iVar9 + 0x68" (identifier "iVar9") (+ "+") (number_literal "0x68")) () ")")))) (+ "+") (number_literal "2")) (, ",") (number_literal "0") (, ",") (identifier "local_2c") (, ",") (identifier "local_2c") () ")"))) (; ";"))) (expression_statement "FUN_00032230(0,0xffffffff,4);" (call_expression "FUN_00032230(0,0xffffffff,4)" (identifier "FUN_00032230") (argument_list "(0,0xffffffff,4)" (( "(") (number_literal "0") (, ",") (number_literal "0xffffffff") (, ",") (number_literal "4") () ")"))) (; ";")) (labeled_statement "LAB_000a1ffd:\n          if (local_28 != 0) {\n            FUN_00031430();\n          }" (statement_identifier "LAB_000a1ffd") (: ":") (if_statement "if (local_28 != 0) {\n            FUN_00031430();\n          }" (if "if") (parenthesized_expression "(local_28 != 0)" (( "(") (binary_expression "local_28 != 0" (identifier "local_28") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00031430();\n          }" ({ "{") (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}")))) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" (identifier "local_2c") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" (else "else") (compound_statement "{\n    if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }\n    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;\n    FUN_0006dd90();\n    local_2c = *param_1;\n  }" ({ "{") (if_statement "if (local_38[3] == 0) {\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }" (if "if") (parenthesized_expression "(local_38[3] == 0)" (( "(") (binary_expression "local_38[3] == 0" (subscript_expression "local_38[3]" (identifier "local_38") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);\n      goto LAB_000a1878;\n    }" ({ "{") (expression_statement "FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);" (call_expression "FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0)" (identifier "FUN_0003c160") (argument_list "(param_1,"use DROP TABLE to delete table %s",*local_38,0)" (( "(") (identifier "param_1") (, ",") (string_literal ""use DROP TABLE to delete table %s"" (" """) (string_content "use DROP TABLE to delete table %s") (" """)) (, ",") (pointer_expression "*local_38" (* "*") (identifier "local_38")) (, ",") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";")) (} "}"))) (if_statement "if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;" (if "if") (parenthesized_expression "((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0))" (( "(") (binary_expression "(param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)" (parenthesized_expression "(param_1[2] == 0)" (( "(") (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = FUN_000318c0(), iVar9 == 0)" (( "(") (comma_expression "iVar9 = FUN_000318c0(), iVar9 == 0" (assignment_expression "iVar9 = FUN_000318c0()" (identifier "iVar9") (= "=") (call_expression "FUN_000318c0()" (identifier "FUN_000318c0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000a1878;" (goto "goto") (statement_identifier "LAB_000a1878") (; ";"))) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" (identifier "FUN_0006dd90") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" (identifier "local_2c") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}")))) (expression_statement "puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));" (assignment_expression "puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10))" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(local_30 + *(int *)(local_2c + 0x10))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_30 + *(int *)(local_2c + 0x10))" (( "(") (binary_expression "local_30 + *(int *)(local_2c + 0x10)" (identifier "local_30") (+ "+") (pointer_expression "*(int *)(local_2c + 0x10)" (* "*") (cast_expression "(int *)(local_2c + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x10)" (( "(") (binary_expression "local_2c + 0x10" (identifier "local_2c") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (if_statement "if (param_1[2] == 0) {\n    FUN_000318c0();\n  }" (if "if") (parenthesized_expression "(param_1[2] == 0)" (( "(") (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000318c0();\n  }" ({ "{") (expression_statement "FUN_000318c0();" (call_expression "FUN_000318c0()" (identifier "FUN_000318c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0006dd90();" (call_expression "FUN_0006dd90()" (identifier "FUN_0006dd90") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_38[0xe] != 0) {\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }" (if "if") (parenthesized_expression "(local_38[0xe] != 0)" (( "(") (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" (identifier "local_38") ([ "[") (number_literal "0xe") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);\n  }" ({ "{") (expression_statement "FUN_000315c0(0,0,extraout_EDX,extraout_EDX);" (call_expression "FUN_000315c0(0,0,extraout_EDX,extraout_EDX)" (identifier "FUN_000315c0") (argument_list "(0,0,extraout_EDX,extraout_EDX)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "extraout_EDX") (, ",") (identifier "extraout_EDX") () ")"))) (; ";")) (} "}"))) (for_statement "for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {\n    FUN_000a1690();\n  }" (for "for") (( "(") (assignment_expression "iVar9 = FUN_0002ac70()" (identifier "iVar9") (= "=") (call_expression "FUN_0002ac70()" (identifier "FUN_0002ac70") (argument_list "()" (( "(") () ")")))) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = *(int *)(iVar9 + 0x20)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar9 + 0x20)" (* "*") (cast_expression "(int *)(iVar9 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x20)" (( "(") (binary_expression "iVar9 + 0x20" (identifier "iVar9") (+ "+") (number_literal "0x20")) () ")"))))) () ")") (compound_statement "{\n    FUN_000a1690();\n  }" ({ "{") (expression_statement "FUN_000a1690();" (call_expression "FUN_000a1690()" (identifier "FUN_000a1690") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar9 = *local_38;" (assignment_expression "iVar9 = *local_38" (identifier "iVar9") (= "=") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) (; ";")) (expression_statement "piVar10 = (int *)*puVar8;" (assignment_expression "piVar10 = (int *)*puVar8" (identifier "piVar10") (= "=") (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (if_statement "if ((*(byte *)(local_38 + 9) & 8) != 0) {\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }" (if "if") (parenthesized_expression "((*(byte *)(local_38 + 9) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(local_38 + 9) & 8) != 0" (parenthesized_expression "(*(byte *)(local_38 + 9) & 8)" (( "(") (binary_expression "*(byte *)(local_38 + 9) & 8" (pointer_expression "*(byte *)(local_38 + 9)" (* "*") (cast_expression "(byte *)(local_38 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 9)" (( "(") (binary_expression "local_38 + 9" (identifier "local_38") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);\n    iVar9 = *local_38;\n    piVar10 = (int *)*puVar8;\n  }" ({ "{") (expression_statement "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);" (call_expression "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9)" (identifier "FUN_000a1550") (argument_list "(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9)" (( "(") (identifier "param_1") (, ",") (string_literal ""DELETE FROM %Q.sqlite_sequence WHERE name=%Q"" (" """) (string_content "DELETE FROM %Q.sqlite_sequence WHERE name=%Q") (" """)) (, ",") (identifier "piVar10") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "iVar9 = *local_38;" (assignment_expression "iVar9 = *local_38" (identifier "iVar9") (= "=") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) (; ";")) (expression_statement "piVar10 = (int *)*puVar8;" (assignment_expression "piVar10 = (int *)*puVar8" (identifier "piVar10") (= "=") (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (} "}"))) (expression_statement "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9);" (call_expression "FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9)" (identifier "FUN_000a1550") (argument_list "(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",\n               piVar10,iVar9)" (( "(") (identifier "param_1") (, ",") (string_literal ""DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'"" (" """) (string_content "DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=") (escape_sequence "\'") (string_content "trigger") (escape_sequence "\'") (" """)) (, ",") (identifier "piVar10") (, ",") (identifier "iVar9") () ")"))) (; ";")) (if_statement "if (param_3 == 0) {\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }\n  else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }\nLAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);\n    FUN_00032090(0);\n    piVar10 = (int *)param_1[0x1d];\n    if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }\n    *(undefined1 *)((int)piVar10 + 0x15) = 1;\n    piVar10 = local_38;\n  }" ({ "{") (if_statement "if (local_38[0xe] == 0) {\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }" (if "if") (parenthesized_expression "(local_38[0xe] == 0)" (( "(") (binary_expression "local_38[0xe] == 0" (subscript_expression "local_38[0xe]" (identifier "local_38") ([ "[") (number_literal "0xe") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = local_38[7];\n      uVar13 = 0;\n      while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }\n      goto LAB_000a1d8c;\n    }" ({ "{") (expression_statement "uVar3 = local_38[7];" (assignment_expression "uVar3 = local_38[7]" (identifier "uVar3") (= "=") (subscript_expression "local_38[7]" (identifier "local_38") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar9 = local_38[2];\n        local_40 = uVar3;\n        if (uVar3 < uVar13) goto joined_r0x000a1f5d;\n        if (uVar13 == 0) goto joined_r0x000a1f5d;\n        if (iVar9 == 0) break;\n        local_40 = 0;\n        do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);\n        if (local_40 == 0) break;\n        if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }\n        FUN_0001d6fd();\n        uVar13 = local_40;\n      }" ({ "{") (expression_statement "iVar9 = local_38[2];" (assignment_expression "iVar9 = local_38[2]" (identifier "iVar9") (= "=") (subscript_expression "local_38[2]" (identifier "local_38") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_40 = uVar3;" (assignment_expression "local_40 = uVar3" (identifier "local_40") (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (uVar3 < uVar13) goto joined_r0x000a1f5d;" (if "if") (parenthesized_expression "(uVar3 < uVar13)" (( "(") (binary_expression "uVar3 < uVar13" (identifier "uVar3") (< "<") (identifier "uVar13")) () ")")) (goto_statement "goto joined_r0x000a1f5d;" (goto "goto") (statement_identifier "joined_r0x000a1f5d") (; ";"))) (if_statement "if (uVar13 == 0) goto joined_r0x000a1f5d;" (if "if") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x000a1f5d;" (goto "goto") (statement_identifier "joined_r0x000a1f5d") (; ";"))) (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        } while (iVar9 != 0);" (do "do") (compound_statement "{\n          uVar4 = *(uint *)(iVar9 + 0x2c);\n          uVar6 = local_40;\n          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }\n          local_40 = uVar6;\n          iVar9 = *(int *)(iVar9 + 0x14);\njoined_r0x000a1f5d:\n        }" ({ "{") (expression_statement "uVar4 = *(uint *)(iVar9 + 0x2c);" (assignment_expression "uVar4 = *(uint *)(iVar9 + 0x2c)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar9 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar9 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x2c)" (( "(") (binary_expression "iVar9 + 0x2c" (identifier "iVar9") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "uVar6 = local_40;" (assignment_expression "uVar6 = local_40" (identifier "uVar6") (= "=") (identifier "local_40")) (; ";")) (if_statement "if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {\n            uVar6 = local_40;\n          }" (if "if") (parenthesized_expression "((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40))" (( "(") (binary_expression "(uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)" (parenthesized_expression "(uVar13 == 0 || uVar4 < uVar13)" (( "(") (binary_expression "uVar13 == 0 || uVar4 < uVar13" (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) (|| "||") (binary_expression "uVar4 < uVar13" (identifier "uVar4") (< "<") (identifier "uVar13"))) () ")")) (&& "&&") (parenthesized_expression "(uVar6 = uVar4, uVar4 <= local_40)" (( "(") (comma_expression "uVar6 = uVar4, uVar4 <= local_40" (assignment_expression "uVar6 = uVar4" (identifier "uVar6") (= "=") (identifier "uVar4")) (, ",") (binary_expression "uVar4 <= local_40" (identifier "uVar4") (<= "<=") (identifier "local_40"))) () ")"))) () ")")) (compound_statement "{\n            uVar6 = local_40;\n          }" ({ "{") (expression_statement "uVar6 = local_40;" (assignment_expression "uVar6 = local_40" (identifier "uVar6") (= "=") (identifier "local_40")) (; ";")) (} "}"))) (expression_statement "local_40 = uVar6;" (assignment_expression "local_40 = uVar6" (identifier "local_40") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "iVar9 = *(int *)(iVar9 + 0x14);" (assignment_expression "iVar9 = *(int *)(iVar9 + 0x14)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar9 + 0x14)" (* "*") (cast_expression "(int *)(iVar9 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x14)" (( "(") (binary_expression "iVar9 + 0x14" (identifier "iVar9") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (labeled_statement "joined_r0x000a1f5d:" (statement_identifier "joined_r0x000a1f5d") (: ":") (expression_statement "" (; ""))) (} "}")) (while "while") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (local_40 == 0) break;" (if "if") (parenthesized_expression "(local_40 == 0)" (( "(") (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_38[0x12] != 0) {\n          FUN_0002a630();\n        }" (if "if") (parenthesized_expression "(local_38[0x12] != 0)" (( "(") (binary_expression "local_38[0x12] != 0" (subscript_expression "local_38[0x12]" (identifier "local_38") ([ "[") (number_literal "0x12") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_0002a630();\n        }" ({ "{") (expression_statement "FUN_0002a630();" (call_expression "FUN_0002a630()" (identifier "FUN_0002a630") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0001d6fd();" (call_expression "FUN_0001d6fd()" (identifier "FUN_0001d6fd") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar13 = local_40;" (assignment_expression "uVar13 = local_40" (identifier "uVar13") (= "=") (identifier "local_40")) (; ";")) (} "}"))) (goto_statement "goto LAB_000a1d8c;" (goto "goto") (statement_identifier "LAB_000a1d8c") (; ";")) (} "}"))) (labeled_statement "LAB_000a1af5:\n    FUN_000315c0(0,0,local_38,local_38);" (statement_identifier "LAB_000a1af5") (: ":") (expression_statement "FUN_000315c0(0,0,local_38,local_38);" (call_expression "FUN_000315c0(0,0,local_38,local_38)" (identifier "FUN_000315c0") (argument_list "(0,0,local_38,local_38)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "local_38") (, ",") (identifier "local_38") () ")"))) (; ";"))) (expression_statement "FUN_00032090(0);" (call_expression "FUN_00032090(0)" (identifier "FUN_00032090") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar10 = (int *)param_1[0x1d];" (assignment_expression "piVar10 = (int *)param_1[0x1d]" (identifier "piVar10") (= "=") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)param_1[0x1d] == (int *)0x0) {\n      piVar10 = param_1;\n    }" (if "if") (parenthesized_expression "((int *)param_1[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)param_1[0x1d] == (int *)0x0" (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar10 = param_1;\n    }" ({ "{") (expression_statement "piVar10 = param_1;" (assignment_expression "piVar10 = param_1" (identifier "piVar10") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((int)piVar10 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar10 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar10 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)piVar10 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar10 + 0x15)" (( "(") (binary_expression "(int)piVar10 + 0x15" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (+ "+") (number_literal "0x15")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar10 = local_38;" (assignment_expression "piVar10 = local_38" (identifier "piVar10") (= "=") (identifier "local_38")) (; ";")) (} "}")) (else_clause "else {\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" (else "else") (compound_statement "{\nLAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;\n  }" ({ "{") (labeled_statement "LAB_000a1d8c:\n    if (local_38[0xe] != 0) goto LAB_000a1af5;" (statement_identifier "LAB_000a1d8c") (: ":") (if_statement "if (local_38[0xe] != 0) goto LAB_000a1af5;" (if "if") (parenthesized_expression "(local_38[0xe] != 0)" (( "(") (binary_expression "local_38[0xe] != 0" (subscript_expression "local_38[0xe]" (identifier "local_38") ([ "[") (number_literal "0xe") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a1af5;" (goto "goto") (statement_identifier "LAB_000a1af5") (; ";")))) (} "}")))) (expression_statement "FUN_000315c0(0,0,piVar10);" (call_expression "FUN_000315c0(0,0,piVar10)" (identifier "FUN_000315c0") (argument_list "(0,0,piVar10)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "piVar10") () ")"))) (; ";")) (expression_statement "FUN_00032090(0);" (call_expression "FUN_00032090(0)" (identifier "FUN_00032090") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00031940();" (call_expression "FUN_00031940()" (identifier "FUN_00031940") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar9 = *(int *)(local_2c + 0x10);" (assignment_expression "iVar9 = *(int *)(local_2c + 0x10)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(local_2c + 0x10)" (* "*") (cast_expression "(int *)(local_2c + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x10)" (( "(") (binary_expression "local_2c + 0x10" (identifier "local_2c") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar9 + 0xc + local_30);" (assignment_expression "iVar7 = *(int *)(iVar9 + 0xc + local_30)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar9 + 0xc + local_30)" (* "*") (cast_expression "(int *)(iVar9 + 0xc + local_30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc + local_30)" (( "(") (binary_expression "iVar9 + 0xc + local_30" (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) (+ "+") (identifier "local_30")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }" (if "if") (parenthesized_expression "((*(byte *)(iVar7 + 0x4e) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar7 + 0x4e) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x4e) & 2)" (( "(") (binary_expression "*(byte *)(iVar7 + 0x4e) & 2" (pointer_expression "*(byte *)(iVar7 + 0x4e)" (* "*") (cast_expression "(byte *)(iVar7 + 0x4e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x4e)" (( "(") (binary_expression "iVar7 + 0x4e" (identifier "iVar7") (+ "+") (number_literal "0x4e")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar10 = *(int **)(iVar7 + 0x10);\n    if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }\n    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);\n    *puVar1 = *puVar1 & 0xfffd;\n  }" ({ "{") (expression_statement "piVar10 = *(int **)(iVar7 + 0x10);" (assignment_expression "piVar10 = *(int **)(iVar7 + 0x10)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(iVar7 + 0x10)" (* "*") (cast_expression "(int **)(iVar7 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (piVar10 != (int *)0x0) {\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }" (if "if") (parenthesized_expression "(piVar10 != (int *)0x0)" (( "(") (binary_expression "piVar10 != (int *)0x0" (identifier "piVar10") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);\n      iVar9 = *(int *)(local_2c + 0x10);\n    }" ({ "{") (do_statement "do {\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      } while (piVar10 != (int *)0x0);" (do "do") (compound_statement "{\n        iVar9 = piVar10[2];\n        if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }\n        piVar10 = (int *)*piVar10;\n      }" ({ "{") (expression_statement "iVar9 = piVar10[2];" (assignment_expression "iVar9 = piVar10[2]" (identifier "iVar9") (= "=") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (*(int *)(iVar9 + 0xc) != 0) {\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar9 + 0xc) != 0)" (( "(") (binary_expression "*(int *)(iVar9 + 0xc) != 0" (pointer_expression "*(int *)(iVar9 + 0xc)" (* "*") (cast_expression "(int *)(iVar9 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00043d50();\n          *(undefined4 *)(iVar9 + 4) = 0;\n          *(undefined2 *)(iVar9 + 0x2a) = 0;\n        }" ({ "{") (expression_statement "FUN_00043d50();" (call_expression "FUN_00043d50()" (identifier "FUN_00043d50") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar9 + 4) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 4) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar9 + 0x2a) = 0;" (assignment_expression "*(undefined2 *)(iVar9 + 0x2a) = 0" (pointer_expression "*(undefined2 *)(iVar9 + 0x2a)" (* "*") (cast_expression "(undefined2 *)(iVar9 + 0x2a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x2a)" (( "(") (binary_expression "iVar9 + 0x2a" (identifier "iVar9") (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "piVar10 = (int *)*piVar10;" (assignment_expression "piVar10 = (int *)*piVar10" (identifier "piVar10") (= "=") (cast_expression "(int *)*piVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar10 != (int *)0x0)" (( "(") (binary_expression "piVar10 != (int *)0x0" (identifier "piVar10") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "iVar9 = *(int *)(local_2c + 0x10);" (assignment_expression "iVar9 = *(int *)(local_2c + 0x10)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(local_2c + 0x10)" (* "*") (cast_expression "(int *)(local_2c + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x10)" (( "(") (binary_expression "local_2c + 0x10" (identifier "local_2c") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (expression_statement "puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);" (assignment_expression "puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" (identifier "puVar1") (= "=") (cast_expression "(ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar9 + 0xc + local_30) + 0x4e)" (( "(") (binary_expression "*(int *)(iVar9 + 0xc + local_30) + 0x4e" (pointer_expression "*(int *)(iVar9 + 0xc + local_30)" (* "*") (cast_expression "(int *)(iVar9 + 0xc + local_30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc + local_30)" (( "(") (binary_expression "iVar9 + 0xc + local_30" (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) (+ "+") (identifier "local_30")) () ")")))) (+ "+") (number_literal "0x4e")) () ")")))) (; ";")) (expression_statement "*puVar1 = *puVar1 & 0xfffd;" (assignment_expression "*puVar1 = *puVar1 & 0xfffd" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 & 0xfffd" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (& "&") (number_literal "0xfffd"))) (; ";")) (} "}"))) (labeled_statement "LAB_000a1878:\n  FUN_00043120();" (statement_identifier "LAB_000a1878") (: ":") (expression_statement "FUN_00043120();" (call_expression "FUN_00043120()" (identifier "FUN_00043120") (argument_list "()" (( "(") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 function_1(type_1 *pParse,type_2 *pName,int var_13,int var_3)

{
  type_3 *puVar1;
  type_4 *var_16;
  type_5 *var_7;
  type_6 var_34;
  type_6 var_36;
  type_7 *pcVar5;
  type_6 uVar6;
  int var_2;
  int var_12;
  type_8 *puVar9;
  type_9 *var_31;
  type_8 uVar10;
  type_10 *pDVar11;
  type_1 *pPVar12;
  type_11 *pHVar13;
  type_2 *pSVar14;
  type_12 *var_20;
  type_4 *psVar16;
  int *var_14;
  type_6 var_35;
  type_13 *pOrderBy;
  type_14 *pLimit;
  char *in_stack_ffffffac;
  char *zArg2;
  type_13 *in_stack_ffffffb4;
  type_14 *in_stack_ffffffb8;
  type_6 var_37;
  type_1 *var_5;
  type_1 *local_34;
  int var_10;
  type_4 *local_2c;
  type_12 *var_28;
  
  var_16 = pParse->var_16;
  if ((var_16->mallocFailed != '\0') || (var_2 = var_1(pParse), var_2 != 0))
  goto LAB_000a1878;
  if (var_3 == 0) {
    zArg2 = (char *)0xa1beb;
    var_5 = (type_1 *)var_4(pParse,var_13,pName->a);
    if (var_5 == (type_1 *)0x0) goto LAB_000a1878;
  }
  else {
    var_16->suppressErr = var_16->suppressErr + '\x01';
    zArg2 = (char *)0xa18b5;
    var_5 = (type_1 *)var_4(pParse,var_13,pName->a);
    var_16->suppressErr = var_16->suppressErr + 0xff;
    if (var_5 == (type_1 *)0x0) {
      var_6(pParse,pName->a[0].zDatabase);
      goto LAB_000a1878;
    }
  }
  var_7 = (type_5 *)(var_5->constraintName).z;
  if (var_7 == (type_5 *)0x0) {
    if (var_5->nLabel != 0) {
      zArg2 = (char *)0xa1cd3;
      var_2 = var_8(pParse,(type_15 *)var_5);
      if (var_2 != 0) goto LAB_000a1878;
    }
    var_10 = -0x80000;
    local_34 = (type_1 *)0xffff8000;
  }
  else {
    zArg2 = (char *)0xa18db;
    local_34 = (type_1 *)var_9(var_16,var_7);
    if (var_5->nLabel != 0) {
      zArg2 = (char *)0xa1c7b;
      var_2 = var_8(pParse,(type_15 *)var_5);
      if (var_2 != 0) goto LAB_000a1878;
    }
    var_10 = (int)local_34 << 4;
  }
  var_2 = *(int *)((int)&var_16->aDb->zDbSName + var_10);
  var_12 = var_11((type_1 *)0x0,var_2,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);
  if (var_12 != 0) goto LAB_000a1878;
  if (var_13 == 0) {
    if (var_5->nLabel == 0) {
      pPVar12 = (type_1 *)0x0;
    }
    else {
      var_14 = var_5->aLabel;
      while( true ) {
        if (var_14 == (int *)0x0) {
                    /* WARNING: Does not return */
          pcVar5 = (type_7 *)var_15();
          (*pcVar5)();
        }
        if (var_16 == (type_4 *)*var_14) break;
        var_14 = (int *)var_14[6];
      }
      pPVar12 = *(type_1 **)(var_14[1] + 4);
    }
  }
  else {
    pPVar12 = (type_1 *)0x0;
  }
  var_12 = var_11(pPVar12,var_2,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4);
  if ((var_12 != 0) ||
     (var_2 = var_11((type_1 *)0x0,var_2,in_stack_ffffffac,zArg2,(char *)in_stack_ffffffb4)
     , var_2 != 0)) goto LAB_000a1878;
  var_2 = var_17((char *)var_5->var_16,"sqlite_",7);
  if (var_2 == 0) {
    var_2 = var_17((char *)((int)&var_5->var_16->pVdbe + 3),"stat",4);
    if ((var_2 != 0) &&
       (var_2 = var_17((char *)((int)&var_5->var_16->pVdbe + 3),"parameters",10),
       var_2 != 0)) goto LAB_000a1d3c;
  }
  else if (((var_5->nErr & 0x1000) != 0) &&
          ((((var_16->flags & 0x10000000) != 0 && (var_16->pVtabCtx == (type_16 *)0x0)) &&
           (var_16->nVdbeExec == 0)))) {
LAB_000a1d3c:
    var_18(pParse,"table %s may not be dropped",var_5->var_16);
    goto LAB_000a1878;
  }
  if (var_13 == 0) {
    if (var_5->rc != 0) {
      var_18(pParse,"use DROP VIEW to delete view %s",var_5->var_16);
      goto LAB_000a1878;
    }
    if ((pParse->pVdbe == (type_12 *)0x0) && (var_20 = var_19(pParse), var_20 == (type_12 *)0x0)
       ) goto LAB_000a1878;
    var_21(pParse,1,(int)local_34);
    var_22(pParse,(int)local_34,"tbl",(char *)var_5->var_16);
    local_2c = pParse->var_16;
    if (((local_2c->flags & 0x4000) != 0) && (var_5->nLabel == 0)) {
      var_20 = pParse->pVdbe;
      if (var_20 == (type_12 *)0x0) {
        var_20 = var_19(pParse);
      }
      pHVar13 = var_23((type_17 *)((var_5->constraintName).z + 0x38),
                                    (char *)var_5->var_16,(type_6 *)0x0);
      if (pHVar13->data == (void *)0x0) {
        var_2._0_1_ = var_5->colNamesSet;
        var_2._1_1_ = var_5->checkSchema;
        var_2._2_1_ = var_5->nested;
        var_2._3_1_ = var_5->nTempReg;
        for (; var_2 != 0; var_2 = *(int *)(var_2 + 4)) {
          if ((*(char *)(var_2 + 0x18) != '\0') || ((local_2c->flags & 0x80000) != 0)) {
            var_28 = (type_12 *)(pParse->nLabel + -1);
            pParse->nLabel = (int)var_28;
            pLimit = (type_14 *)0x0;
            pOrderBy = (type_13 *)var_28;
            var_24(var_20,0x2f,1,(int)var_28,0);
            pParse->disableTriggers = '\x01';
            pSVar14 = var_25(local_2c,pName,0);
            var_26(pParse,pSVar14,(type_14 *)0x0,pOrderBy,pLimit);
            pParse->disableTriggers = '\0';
            if ((local_2c->flags & 0x80000) != 0) goto LAB_000a1ffd;
            goto LAB_000a1fc7;
          }
        }
      }
      else {
        pParse->disableTriggers = '\x01';
        pSVar14 = var_25(local_2c,pName,0);
        var_26(pParse,pSVar14,(type_14 *)0x0,in_stack_ffffffb4,in_stack_ffffffb8);
        pParse->disableTriggers = '\0';
        var_28 = (type_12 *)0x0;
        if ((local_2c->flags & 0x80000) == 0) {
LAB_000a1fc7:
          var_24(var_20,0x2f,0,var_20->nOp + 2,0);
          var_27(pParse,0x313,2,(char *)0x0,-1,'\x04');
LAB_000a1ffd:
          if (var_28 != (type_12 *)0x0) {
            var_29(var_20,(int)var_28);
          }
        }
      }
      local_2c = pParse->var_16;
    }
  }
  else {
    if (var_5->rc == 0) {
      var_18(pParse,"use DROP TABLE to delete table %s",var_5->var_16,0);
      goto LAB_000a1878;
    }
    if ((pParse->pVdbe == (type_12 *)0x0) && (var_20 = var_19(pParse), var_20 == (type_12 *)0x0)
       ) goto LAB_000a1878;
    var_21(pParse,1,(int)local_34);
    local_2c = pParse->var_16;
  }
  puVar9 = (type_8 *)((int)&local_2c->aDb->zDbSName + var_10);
  var_28 = pParse->pVdbe;
  if (var_28 == (type_12 *)0x0) {
    var_28 = var_19(pParse);
  }
  var_21(pParse,1,(int)local_34);
  if (var_5->nLabel != 0) {
    var_24(var_28,0xa2,0,0,0);
  }
  for (var_31 = var_30((type_1 *)pParse->var_16,(type_15 *)(type_6)pParse->disableTriggers,
                                     var_5); var_31 != (type_9 *)0x0;
      var_31 = var_31->pNext) {
    var_32(pParse,var_31);
  }
  psVar16 = var_5->var_16;
  uVar10 = *puVar9;
  if ((var_5->nErr & 8) != 0) {
    var_33(pParse,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",uVar10,psVar16);
    psVar16 = var_5->var_16;
    uVar10 = *puVar9;
  }
  var_33(pParse,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",
                     uVar10,psVar16);
  if (var_13 == 0) {
    if (var_5->nLabel == 0) {
      var_34 = var_5->nRangeReg;
      var_35 = 0;
      while( true ) {
        var_20 = var_5->pVdbe;
        var_37 = var_34;
        if (var_34 < var_35) goto joined_r0x000a1f5d;
        if (var_35 == 0) goto joined_r0x000a1f5d;
        if (var_20 == (type_12 *)0x0) break;
        var_37 = 0;
        do {
          var_36 = var_20->nChange;
          uVar6 = var_37;
          if ((var_35 == 0 || var_36 < var_35) && (uVar6 = var_36, var_36 <= var_37)) {
            uVar6 = var_37;
          }
          var_37 = uVar6;
          var_20 = (type_12 *)var_20->magic;
joined_r0x000a1f5d:
        } while (var_20 != (type_12 *)0x0);
        if (var_37 == 0) break;
        var_2 = -0x8000;
        var_7 = (type_5 *)(var_5->constraintName).z;
        if (var_7 != (type_5 *)0x0) {
          var_2 = var_9(pParse->var_16,var_7);
        }
        var_38(pParse,var_37,var_2);
        var_35 = var_37;
      }
      goto LAB_000a1d8c;
    }
LAB_000a1af5:
    psVar16 = var_5->var_16;
    var_2 = var_24(var_28,0xa4,(int)local_34,0,0);
    var_39(var_28,var_2,(char *)psVar16,0);
    pPVar12 = pParse->pToplevel;
    if (pParse->pToplevel == (type_1 *)0x0) {
      pPVar12 = pParse;
    }
    pPVar12->mayAbort = '\x01';
  }
  else {
LAB_000a1d8c:
    if (var_5->nLabel != 0) goto LAB_000a1af5;
  }
  psVar16 = var_5->var_16;
  var_2 = var_24(var_28,0x8f,(int)local_34,0,0);
  var_39(var_28,var_2,(char *)psVar16,0);
  var_40((type_1 *)pParse->var_16,(int)pParse->pVdbe,local_34);
  pDVar11 = local_2c->aDb;
  var_2 = *(int *)((int)&pDVar11->pSchema + var_10);
  if ((*(type_18 *)(var_2 + 0x4e) & 2) != 0) {
    var_14 = *(int **)(var_2 + 0x10);
    if (var_14 != (int *)0x0) {
      do {
        var_2 = var_14[2];
        if (*(int *)(var_2 + 0xc) != 0) {
          var_41(local_2c,(type_15 *)(var_2 + 4),(type_15 *)(var_2 + 0x2a));
          *(type_8 *)(var_2 + 4) = 0;
          *(type_19 *)(var_2 + 0x2a) = 0;
        }
        var_14 = (int *)*var_14;
      } while (var_14 != (int *)0x0);
      pDVar11 = local_2c->aDb;
    }
    puVar1 = (type_3 *)(*(int *)((int)&pDVar11->pSchema + var_10) + 0x4e);
    *puVar1 = *puVar1 & 0xfffd;
  }
LAB_000a1878:
  var_42(var_16,pName);
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 MASKED(int *param_1,undefined4 param_2,int param_3,int param_4)

{
  ushort *puVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  code *pcVar5;
  uint uVar6;
  int iVar7;
  undefined4 *puVar8;
  int iVar9;
  int *piVar10;
  undefined4 uVar11;
  int extraout_ECX;
  int iVar12;
  undefined4 extraout_EDX;
  uint uVar13;
  uint local_40;
  int *local_38;
  int local_30;
  int local_2c;
  int local_28;
  
  iVar9 = *param_1;
  if ((*(char *)(iVar9 + 0x4d) != '\0') || (iVar7 = FUN_0008f690(), iVar7 != 0)) goto LAB_000a1878;
  if (param_4 == 0) {
    local_38 = (int *)FUN_0008ffe0();
    if (local_38 == (int *)0x0) goto LAB_000a1878;
  }
  else {
    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + '\x01';
    local_38 = (int *)FUN_0008ffe0();
    *(char *)(iVar9 + 0x51) = *(char *)(iVar9 + 0x51) + -1;
    if (local_38 == (int *)0x0) {
      FUN_0006ddc0();
      goto LAB_000a1878;
    }
  }
  if (local_38[0x12] == 0) {
    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;
    local_30 = -0x80000;
  }
  else {
    local_30 = FUN_0002a630();
    if ((local_38[0xe] != 0) && (iVar7 = FUN_00083c60(), iVar7 != 0)) goto LAB_000a1878;
    local_30 = local_30 << 4;
  }
  uVar2 = *(undefined4 *)(*(int *)(iVar9 + 0x10) + local_30);
  iVar7 = FUN_0003c520(0,uVar2);
  if (iVar7 != 0) goto LAB_000a1878;
  if (param_3 == 0) {
    if (local_38[0xe] == 0) {
      uVar11 = 0;
    }
    else {
      piVar10 = (int *)local_38[0x10];
      while( true ) {
        if (piVar10 == (int *)0x0) {
                    /* WARNING: Does not return */
          pcVar5 = (code *)invalidInstructionException();
          (*pcVar5)();
        }
        if (iVar9 == *piVar10) break;
        piVar10 = (int *)piVar10[6];
      }
      uVar11 = *(undefined4 *)(piVar10[1] + 4);
    }
  }
  else {
    uVar11 = 0;
  }
  iVar7 = FUN_0003c520(uVar11,uVar2);
  if ((iVar7 != 0) || (iVar7 = FUN_0003c520(0,uVar2), iVar7 != 0)) goto LAB_000a1878;
  iVar7 = sqlite3_strnicmp(*local_38,"sqlite_",7);
  if (iVar7 == 0) {
    iVar9 = sqlite3_strnicmp(*local_38 + 7,&DAT_000ab464,4);
    if ((iVar9 != 0) && (iVar9 = sqlite3_strnicmp(*local_38 + 7,"parameters",10), iVar9 != 0))
    goto LAB_000a1d3c;
  }
  else if (((*(byte *)((int)local_38 + 0x25) & 0x10) != 0) &&
          ((((*(byte *)(iVar9 + 0x1f) & 0x10) != 0 && (*(int *)(iVar9 + 0x170) == 0)) &&
           (*(int *)(iVar9 + 0xb4) == 0)))) {
LAB_000a1d3c:
    FUN_0003c160(param_1,"table %s may not be dropped",*local_38);
    goto LAB_000a1878;
  }
  if (param_3 == 0) {
    if (local_38[3] != 0) {
      FUN_0003c160(param_1,"use DROP VIEW to delete view %s",*local_38);
      goto LAB_000a1878;
    }
    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;
    FUN_0006dd90();
    FUN_0001d64f(*local_38);
    local_2c = *param_1;
    if (((*(byte *)(local_2c + 0x1d) & 0x40) != 0) && (local_38[0xe] == 0)) {
      iVar9 = param_1[2];
      if (iVar9 == 0) {
        iVar9 = FUN_000318c0();
      }
      iVar7 = FUN_0001e430();
      if (*(int *)(iVar7 + 8) == 0) {
        iVar12 = extraout_ECX;
        for (iVar7 = local_38[4]; iVar7 != 0; iVar7 = *(int *)(iVar7 + 4)) {
          if ((*(char *)(iVar7 + 0x18) != '\0') ||
             (iVar12 = local_2c, (*(byte *)(local_2c + 0x1e) & 8) != 0)) {
            local_28 = param_1[0xe] + -1;
            param_1[0xe] = local_28;
            FUN_000315c0(local_28,0,iVar12,iVar12);
            *(undefined1 *)((int)param_1 + 0x96) = 1;
            FUN_00053790();
            FUN_00096310();
            *(undefined1 *)((int)param_1 + 0x96) = 0;
            if ((*(byte *)(local_2c + 0x1e) & 8) != 0) goto LAB_000a1ffd;
            goto LAB_000a1fc7;
          }
        }
      }
      else {
        *(undefined1 *)((int)param_1 + 0x96) = 1;
        FUN_00053790();
        FUN_00096310();
        *(undefined1 *)((int)param_1 + 0x96) = 0;
        local_28 = 0;
        if ((*(byte *)(local_2c + 0x1e) & 8) == 0) {
LAB_000a1fc7:
          FUN_000315c0(*(int *)(iVar9 + 0x68) + 2,0,local_2c,local_2c);
          FUN_00032230(0,0xffffffff,4);
LAB_000a1ffd:
          if (local_28 != 0) {
            FUN_00031430();
          }
        }
      }
      local_2c = *param_1;
    }
  }
  else {
    if (local_38[3] == 0) {
      FUN_0003c160(param_1,"use DROP TABLE to delete table %s",*local_38,0);
      goto LAB_000a1878;
    }
    if ((param_1[2] == 0) && (iVar9 = FUN_000318c0(), iVar9 == 0)) goto LAB_000a1878;
    FUN_0006dd90();
    local_2c = *param_1;
  }
  puVar8 = (undefined4 *)(local_30 + *(int *)(local_2c + 0x10));
  if (param_1[2] == 0) {
    FUN_000318c0();
  }
  FUN_0006dd90();
  if (local_38[0xe] != 0) {
    FUN_000315c0(0,0,extraout_EDX,extraout_EDX);
  }
  for (iVar9 = FUN_0002ac70(); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0x20)) {
    FUN_000a1690();
  }
  iVar9 = *local_38;
  piVar10 = (int *)*puVar8;
  if ((*(byte *)(local_38 + 9) & 8) != 0) {
    FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_sequence WHERE name=%Q",piVar10,iVar9);
    iVar9 = *local_38;
    piVar10 = (int *)*puVar8;
  }
  FUN_000a1550(param_1,"DELETE FROM %Q.sqlite_master WHERE tbl_name=%Q and type!=\'trigger\'",
               piVar10,iVar9);
  if (param_3 == 0) {
    if (local_38[0xe] == 0) {
      uVar3 = local_38[7];
      uVar13 = 0;
      while( true ) {
        iVar9 = local_38[2];
        local_40 = uVar3;
        if (uVar3 < uVar13) goto joined_r0x000a1f5d;
        if (uVar13 == 0) goto joined_r0x000a1f5d;
        if (iVar9 == 0) break;
        local_40 = 0;
        do {
          uVar4 = *(uint *)(iVar9 + 0x2c);
          uVar6 = local_40;
          if ((uVar13 == 0 || uVar4 < uVar13) && (uVar6 = uVar4, uVar4 <= local_40)) {
            uVar6 = local_40;
          }
          local_40 = uVar6;
          iVar9 = *(int *)(iVar9 + 0x14);
joined_r0x000a1f5d:
        } while (iVar9 != 0);
        if (local_40 == 0) break;
        if (local_38[0x12] != 0) {
          FUN_0002a630();
        }
        FUN_0001d6fd();
        uVar13 = local_40;
      }
      goto LAB_000a1d8c;
    }
LAB_000a1af5:
    FUN_000315c0(0,0,local_38,local_38);
    FUN_00032090(0);
    piVar10 = (int *)param_1[0x1d];
    if ((int *)param_1[0x1d] == (int *)0x0) {
      piVar10 = param_1;
    }
    *(undefined1 *)((int)piVar10 + 0x15) = 1;
    piVar10 = local_38;
  }
  else {
LAB_000a1d8c:
    if (local_38[0xe] != 0) goto LAB_000a1af5;
  }
  FUN_000315c0(0,0,piVar10);
  FUN_00032090(0);
  FUN_00031940();
  iVar9 = *(int *)(local_2c + 0x10);
  iVar7 = *(int *)(iVar9 + 0xc + local_30);
  if ((*(byte *)(iVar7 + 0x4e) & 2) != 0) {
    piVar10 = *(int **)(iVar7 + 0x10);
    if (piVar10 != (int *)0x0) {
      do {
        iVar9 = piVar10[2];
        if (*(int *)(iVar9 + 0xc) != 0) {
          FUN_00043d50();
          *(undefined4 *)(iVar9 + 4) = 0;
          *(undefined2 *)(iVar9 + 0x2a) = 0;
        }
        piVar10 = (int *)*piVar10;
      } while (piVar10 != (int *)0x0);
      iVar9 = *(int *)(local_2c + 0x10);
    }
    puVar1 = (ushort *)(*(int *)(iVar9 + 0xc + local_30) + 0x4e);
    *puVar1 = *puVar1 & 0xfffd;
  }
LAB_000a1878:
  FUN_00043120();
  return;
}

