
/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

void __regparm3 sqlite3VtabFinishParse(Parse *pParse,Token *pEnd)

{
  Table *data;
  sqlite3 *db;
  uint uVar1;
  char *pcVar2;
  void *pvVar3;
  Vdbe *p;
  int iVar4;
  Vdbe *iDb;
  Parse *local_20;
  
  data = pParse->pNewTable;
  if (data != (Table *)0x0) {
    db = pParse->db;
    addArgumentToVtab(pParse);
    (pParse->sArg).z = (char *)0x0;
    if (0 < data->nModuleArg) {
      if ((db->init).busy == '\0') {
        if (pEnd != (Token *)0x0) {
          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));
        }
        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);
        if (data->pSchema == (Schema *)0x0) {
          iVar4 = -16000000;
          local_20 = (Parse *)0xfff0bdc0;
        }
        else {
          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);
          iVar4 = (int)local_20 << 4;
        }
        sqlite3NestedParse(pParse,
                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"
                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",
                           data->zName,data->zName,pcVar2,pParse->regRowid);
        if (pcVar2 != (char *)0x0) {
          sqlite3DbFreeNN(db,pcVar2);
        }
        iDb = pParse->pVdbe;
        p = iDb;
        if (iDb == (Vdbe *)0x0) {
          p = sqlite3GetVdbe(pParse);
          iDb = pParse->pVdbe;
        }
        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);
        sqlite3VdbeAddOp3(p,0x9e,0,0,0);
        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);
        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);
        iVar4 = pParse->nMem + 1;
        pParse->nMem = iVar4;
        sqlite3VdbeLoadString(p,iVar4,data->zName);
        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);
      }
      else {
        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);
        if (pvVar3 == (void *)0x0) {
          pParse->pNewTable = (Table *)0x0;
        }
        else {
          uVar1._0_1_ = db->temp_store;
          uVar1._1_1_ = db->mallocFailed;
          uVar1._2_1_ = db->bBenignMalloc;
          uVar1._3_1_ = db->dfltLockMode;
          if ((uVar1 & 0xffff00) == 0) {
            sqlite3OomFault(db);
            return;
          }
        }
      }
    }
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

void __regparm3 FUN_000e74c0(int *param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  puVar1 = (undefined4 *)param_1[0x38];
  if (puVar1 != (undefined4 *)0x0) {
    iVar2 = *param_1;
    FUN_00079ab0();
    param_1[0x3c] = 0;
    if (0 < (int)puVar1[0xe]) {
      if (*(char *)(iVar2 + 0xa1) == '\0') {
        if (param_2 != (int *)0x0) {
          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];
        }
        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);
        if (puVar1[0x12] == 0) {
          iVar4 = -16000000;
        }
        else {
          iVar4 = FUN_0004c580();
          iVar4 = iVar4 << 4;
        }
        FUN_000e3b60(param_1,
                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"
                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,
                     *puVar1,iVar3,param_1[0x16]);
        if (iVar3 != 0) {
          FUN_000428d0();
        }
        if (param_1[2] == 0) {
          FUN_00065f90();
        }
        FUN_00066610();
        FUN_00065e80(0,0);
        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);
        FUN_00066290();
        iVar2 = param_1[0xb];
        param_1[0xb] = iVar2 + 1;
        FUN_00066060();
        FUN_00065e80(iVar2 + 1,0);
      }
      else {
        iVar3 = FUN_00046450();
        if (iVar3 == 0) {
          param_1[0x38] = 0;
        }
        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {
          FUN_00044490();
          return;
        }
      }
    }
  }
  return;
}


CALL 0x00036ac1
ADD ECX,0x94963
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV ESI,dword ptr [EAX + 0xe0]
MOV dword ptr [ESP + 0x8],ECX
TEST ESI,ESI
JZ 0x000e7614
MOV EBX,EAX
MOV EBP,EDX
MOV EDI,dword ptr [EAX]
CALL 0x00079ab0
MOV dword ptr [EBX + 0xf0],0x0
MOV ECX,dword ptr [ESI + 0x38]
TEST ECX,ECX
JLE 0x000e7614
CMP byte ptr [EDI + 0xa1],0x0
JNZ 0x000e7620
TEST EBP,EBP
JZ 0x000e7527
MOV EAX,dword ptr [EBP]
SUB EAX,dword ptr [EBX + 0xb0]
ADD EAX,dword ptr [EBP + 0x4]
MOV dword ptr [EBX + 0xb4],EAX
SUB ESP,0x4
LEA EAX,[EBX + 0xb0]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xfffa5780]
PUSH EAX
PUSH EDI
CALL 0x0007a820
MOV EDX,dword ptr [ESI + 0x48]
ADD ESP,0x10
MOV EBP,EAX
TEST EDX,EDX
JZ 0x000e7674
MOV EAX,EDI
CALL 0x0004c580
MOV dword ptr [ESP + 0xc],EAX
MOV EDX,EAX
SHL EDX,0x4
MOV EAX,dword ptr [ESI]
PUSH dword ptr [EBX + 0x58]
PUSH EBP
PUSH EAX
PUSH EAX
MOV ECX,dword ptr [ESP + 0x18]
LEA EAX,[ECX + 0xfff9bc74]
PUSH EAX
MOV EAX,dword ptr [EDI + 0x10]
PUSH dword ptr [EAX + EDX*0x1]
LEA EAX,[ECX + 0xfffb3e30]
PUSH EAX
PUSH EBX
CALL 0x000e3b60
ADD ESP,0x20
TEST EBP,EBP
JZ 0x000e7598
MOV EDX,EBP
MOV EAX,EDI
CALL 0x000428d0
MOV EBP,dword ptr [EBX + 0x8]
MOV EDX,EBP
TEST EBP,EBP
JZ 0x000e7650
MOV ECX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EBX]
CALL 0x00066610
SUB ESP,0x8
XOR ECX,ECX
MOV EDX,0x9e
PUSH 0x0
MOV EAX,EBP
PUSH 0x0
CALL 0x00065e80
ADD ESP,0xc
PUSH dword ptr [ESI]
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xfffa5798]
PUSH EAX
PUSH EDI
CALL 0x0007a820
MOV EDX,dword ptr [ESP + 0x1c]
MOV ECX,EAX
MOV EAX,EBP
CALL 0x00066290
MOV EAX,dword ptr [EBX + 0x2c]
LEA EDI,[EAX + 0x1]
MOV EAX,EBP
MOV dword ptr [EBX + 0x2c],EDI
MOV ECX,dword ptr [ESI]
MOV EDX,EDI
CALL 0x00066060
POP EAX
POP EDX
PUSH 0x0
PUSH EDI
MOV ECX,dword ptr [ESP + 0x1c]
MOV EDX,0xa1
MOV EAX,EBP
CALL 0x00065e80
ADD ESP,0x10
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0x48]
MOV EDX,dword ptr [ESI]
MOV ECX,ESI
ADD EAX,0x8
CALL 0x00046450
TEST EAX,EAX
JZ 0x000e7668
TEST dword ptr [EDI + 0x4c],0xffff00
JNZ 0x000e7614
ADD ESP,0x1c
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x00044490
MOV EAX,EBX
CALL 0x00065f90
MOV EDX,dword ptr [EBX + 0x8]
MOV EBP,EAX
JMP 0x000e75a5
MOV dword ptr [EBX + 0xe0],0x0
JMP 0x000e7614
MOV EDX,0xff0bdc00
MOV dword ptr [ESP + 0xc],0xfff0bdc0
JMP 0x000e7562
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nvoid __regparm3 FUN_000e74c0(int *param_1,int *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  puVar1 = (undefined4 *)param_1[0x38];\n  if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_000e74c0(int *param_1,int *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  puVar1 = (undefined4 *)param_1[0x38];\n  if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000e74c0(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  puVar1 = (undefined4 *)param_1[0x38];\n  if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "puVar1 = (undefined4 *)param_1[0x38];" (assignment_expression "puVar1 = (undefined4 *)param_1[0x38]" identifier = (cast_expression "(undefined4 *)param_1[0x38]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x38]" identifier [ number_literal ]))) ;) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" ( (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }" { (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "FUN_00079ab0();" (call_expression "FUN_00079ab0()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[0x3c] = 0;" (assignment_expression "param_1[0x3c] = 0" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }" if (parenthesized_expression "(0 < (int)puVar1[0xe])" ( (binary_expression "0 < (int)puVar1[0xe]" number_literal < (cast_expression "(int)puVar1[0xe]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[0xe]" identifier [ number_literal ]))) )) (compound_statement "{\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }" { (if_statement "if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" if (parenthesized_expression "(*(char *)(iVar2 + 0xa1) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0xa1) == '\0'" (pointer_expression "*(char *)(iVar2 + 0xa1)" * (cast_expression "(char *)(iVar2 + 0xa1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xa1)" ( (binary_expression "iVar2 + 0xa1" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }" { (if_statement "if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }" { (expression_statement "param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];" (assignment_expression "param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1]" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) = (binary_expression "(*param_2 - param_1[0x2c]) + param_2[1]" (parenthesized_expression "(*param_2 - param_1[0x2c])" ( (binary_expression "*param_2 - param_1[0x2c]" (pointer_expression "*param_2" * identifier) - (subscript_expression "param_1[0x2c]" identifier [ number_literal ])) )) + (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);" (assignment_expression "iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" identifier = (call_expression "FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" identifier (argument_list "(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" ( identifier , (string_literal ""CREATE VIRTUAL TABLE %T"" " string_content ") , (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) ;) (if_statement "if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" if (parenthesized_expression "(puVar1[0x12] == 0)" ( (binary_expression "puVar1[0x12] == 0" (subscript_expression "puVar1[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          iVar4 = -16000000;\n        }" { (expression_statement "iVar4 = -16000000;" (assignment_expression "iVar4 = -16000000" identifier = number_literal) ;) }) (else_clause "else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" else (compound_statement "{\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" { (expression_statement "iVar4 = FUN_0004c580();" (assignment_expression "iVar4 = FUN_0004c580()" identifier = (call_expression "FUN_0004c580()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = iVar4 << 4;" (assignment_expression "iVar4 = iVar4 << 4" identifier = (binary_expression "iVar4 << 4" identifier << number_literal)) ;) }))) (expression_statement "FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);" (call_expression "FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16])" identifier (argument_list "(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16])" ( identifier , (string_literal ""UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"" " string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression "*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4)" * (cast_expression "(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar4)" ( (binary_expression "*(int *)(iVar2 + 0x10) + iVar4" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) + identifier) )))) , (string_literal ""sqlite_master"" " string_content ") , (pointer_expression "*puVar1" * identifier) , (pointer_expression "*puVar1" * identifier) , identifier , (subscript_expression "param_1[0x16]" identifier [ number_literal ]) ))) ;) (if_statement "if (iVar3 != 0) {\n          FUN_000428d0();\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_000428d0();\n        }" { (expression_statement "FUN_000428d0();" (call_expression "FUN_000428d0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_1[2] == 0) {\n          FUN_00065f90();\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_00065f90();\n        }" { (expression_statement "FUN_00065f90();" (call_expression "FUN_00065f90()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_00066610();" (call_expression "FUN_00066610()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00065e80(0,0);" (call_expression "FUN_00065e80(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);" (call_expression "FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1)" identifier (argument_list "(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1)" ( identifier , (string_literal ""name=\'%q\' AND type=\'table\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (pointer_expression "*puVar1" * identifier) ))) ;) (expression_statement "FUN_00066290();" (call_expression "FUN_00066290()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = param_1[0xb];" (assignment_expression "iVar2 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xb] = iVar2 + 1;" (assignment_expression "param_1[0xb] = iVar2 + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00066060();" (call_expression "FUN_00066060()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00065e80(iVar2 + 1,0);" (call_expression "FUN_00065e80(iVar2 + 1,0)" identifier (argument_list "(iVar2 + 1,0)" ( (binary_expression "iVar2 + 1" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" else (compound_statement "{\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" { (expression_statement "iVar3 = FUN_00046450();" (assignment_expression "iVar3 = FUN_00046450()" identifier = (call_expression "FUN_00046450()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          param_1[0x38] = 0;\n        }" { (expression_statement "param_1[0x38] = 0;" (assignment_expression "param_1[0x38] = 0" (subscript_expression "param_1[0x38]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" else (if_statement "if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" if (parenthesized_expression "((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0)" ( (binary_expression "(*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0" (parenthesized_expression "(*(uint *)(iVar2 + 0x4c) & 0xffff00)" ( (binary_expression "*(uint *)(iVar2 + 0x4c) & 0xffff00" (pointer_expression "*(uint *)(iVar2 + 0x4c)" * (cast_expression "(uint *)(iVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x4c)" ( (binary_expression "iVar2 + 0x4c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          FUN_00044490();\n          return;\n        }" { (expression_statement "FUN_00044490();" (call_expression "FUN_00044490()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nvoid __regparm3 sqlite3VtabFinishParse(Parse *pParse,Token *pEnd)\n\n{\n  Table *data;\n  sqlite3 *db;\n  uint uVar1;\n  char *pcVar2;\n  void *pvVar3;\n  Vdbe *p;\n  int iVar4;\n  Vdbe *iDb;\n  Parse *local_20;\n  \n  data = pParse->pNewTable;\n  if (data != (Table *)0x0) {\n    db = pParse->db;\n    addArgumentToVtab(pParse);\n    (pParse->sArg).z = (char *)0x0;\n    if (0 < data->nModuleArg) {\n      if ((db->init).busy == '\0') {\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }\n      else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3 sqlite3VtabFinishParse(Parse *pParse,Token *pEnd)\n\n{\n  Table *data;\n  sqlite3 *db;\n  uint uVar1;\n  char *pcVar2;\n  void *pvVar3;\n  Vdbe *p;\n  int iVar4;\n  Vdbe *iDb;\n  Parse *local_20;\n  \n  data = pParse->pNewTable;\n  if (data != (Table *)0x0) {\n    db = pParse->db;\n    addArgumentToVtab(pParse);\n    (pParse->sArg).z = (char *)0x0;\n    if (0 < data->nModuleArg) {\n      if ((db->init).busy == '\0') {\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }\n      else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }\n    }\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "sqlite3VtabFinishParse(Parse *pParse,Token *pEnd)" identifier (parameter_list "(Parse *pParse,Token *pEnd)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Token *pEnd" type_identifier (pointer_declarator "*pEnd" * identifier)) ))) (compound_statement "{\n  Table *data;\n  sqlite3 *db;\n  uint uVar1;\n  char *pcVar2;\n  void *pvVar3;\n  Vdbe *p;\n  int iVar4;\n  Vdbe *iDb;\n  Parse *local_20;\n  \n  data = pParse->pNewTable;\n  if (data != (Table *)0x0) {\n    db = pParse->db;\n    addArgumentToVtab(pParse);\n    (pParse->sArg).z = (char *)0x0;\n    if (0 < data->nModuleArg) {\n      if ((db->init).busy == '\0') {\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }\n      else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }\n    }\n  }\n  return;\n}" { (declaration "Table *data;" type_identifier (pointer_declarator "*data" * identifier) ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "void *pvVar3;" primitive_type (pointer_declarator "*pvVar3" * identifier) ;) (declaration "Vdbe *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Vdbe *iDb;" type_identifier (pointer_declarator "*iDb" * identifier) ;) (declaration "Parse *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "data = pParse->pNewTable;" (assignment_expression "data = pParse->pNewTable" identifier = (field_expression "pParse->pNewTable" identifier -> field_identifier)) ;) (if_statement "if (data != (Table *)0x0) {\n    db = pParse->db;\n    addArgumentToVtab(pParse);\n    (pParse->sArg).z = (char *)0x0;\n    if (0 < data->nModuleArg) {\n      if ((db->init).busy == '\0') {\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }\n      else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(data != (Table *)0x0)" ( (binary_expression "data != (Table *)0x0" identifier != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    db = pParse->db;\n    addArgumentToVtab(pParse);\n    (pParse->sArg).z = (char *)0x0;\n    if (0 < data->nModuleArg) {\n      if ((db->init).busy == '\0') {\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }\n      else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "addArgumentToVtab(pParse);" (call_expression "addArgumentToVtab(pParse)" identifier (argument_list "(pParse)" ( identifier ))) ;) (expression_statement "(pParse->sArg).z = (char *)0x0;" (assignment_expression "(pParse->sArg).z = (char *)0x0" (field_expression "(pParse->sArg).z" (parenthesized_expression "(pParse->sArg)" ( (field_expression "pParse->sArg" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (0 < data->nModuleArg) {\n      if ((db->init).busy == '\0') {\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }\n      else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(0 < data->nModuleArg)" ( (binary_expression "0 < data->nModuleArg" number_literal < (field_expression "data->nModuleArg" identifier -> field_identifier)) )) (compound_statement "{\n      if ((db->init).busy == '\0') {\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }\n      else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }\n    }" { (if_statement "if ((db->init).busy == '\0') {\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }\n      else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }" if (parenthesized_expression "((db->init).busy == '\0')" ( (binary_expression "(db->init).busy == '\0'" (field_expression "(db->init).busy" (parenthesized_expression "(db->init)" ( (field_expression "db->init" identifier -> field_identifier) )) . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }\n        pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);\n        if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }\n        sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);\n        if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }\n        iDb = pParse->pVdbe;\n        p = iDb;\n        if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }\n        sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);\n        sqlite3VdbeAddOp3(p,0x9e,0,0,0);\n        pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);\n        sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);\n        iVar4 = pParse->nMem + 1;\n        pParse->nMem = iVar4;\n        sqlite3VdbeLoadString(p,iVar4,data->zName);\n        sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);\n      }" { (if_statement "if (pEnd != (Token *)0x0) {\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }" if (parenthesized_expression "(pEnd != (Token *)0x0)" ( (binary_expression "pEnd != (Token *)0x0" identifier != (cast_expression "(Token *)0x0" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));\n        }" { (expression_statement "(pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z));" (assignment_expression "(pParse->sNameToken).n = (uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z))" (field_expression "(pParse->sNameToken).n" (parenthesized_expression "(pParse->sNameToken)" ( (field_expression "pParse->sNameToken" identifier -> field_identifier) )) . field_identifier) = (call_expression "(uint)(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z))" ( (binary_expression "pEnd->z + (pEnd->n - (int)(pParse->sNameToken).z)" (field_expression "pEnd->z" identifier -> field_identifier) + (parenthesized_expression "(pEnd->n - (int)(pParse->sNameToken).z)" ( (binary_expression "pEnd->n - (int)(pParse->sNameToken).z" (field_expression "pEnd->n" identifier -> field_identifier) - (cast_expression "(int)(pParse->sNameToken).z" ( (type_descriptor "int" primitive_type) ) (field_expression "(pParse->sNameToken).z" (parenthesized_expression "(pParse->sNameToken)" ( (field_expression "pParse->sNameToken" identifier -> field_identifier) )) . field_identifier))) ))) )))) ;) })) (expression_statement "pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);" (assignment_expression "pcVar2 = sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken)" identifier = (call_expression "sqlite3MPrintf(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken)" identifier (argument_list "(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken)" ( identifier , (string_literal ""CREATE VIRTUAL TABLE %T"" " string_content ") , (pointer_expression "&pParse->sNameToken" & (field_expression "pParse->sNameToken" identifier -> field_identifier)) )))) ;) (if_statement "if (data->pSchema == (Schema *)0x0) {\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }\n        else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }" if (parenthesized_expression "(data->pSchema == (Schema *)0x0)" ( (binary_expression "data->pSchema == (Schema *)0x0" (field_expression "data->pSchema" identifier -> field_identifier) == (cast_expression "(Schema *)0x0" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar4 = -16000000;\n          local_20 = (Parse *)0xfff0bdc0;\n        }" { (expression_statement "iVar4 = -16000000;" (assignment_expression "iVar4 = -16000000" identifier = number_literal) ;) (expression_statement "local_20 = (Parse *)0xfff0bdc0;" (assignment_expression "local_20 = (Parse *)0xfff0bdc0" identifier = (cast_expression "(Parse *)0xfff0bdc0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }" else (compound_statement "{\n          local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);\n          iVar4 = (int)local_20 << 4;\n        }" { (expression_statement "local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema);" (assignment_expression "local_20 = (Parse *)sqlite3SchemaToIndex(db,data->pSchema)" identifier = (cast_expression "(Parse *)sqlite3SchemaToIndex(db,data->pSchema)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3SchemaToIndex(db,data->pSchema)" identifier (argument_list "(db,data->pSchema)" ( identifier , (field_expression "data->pSchema" identifier -> field_identifier) ))))) ;) (expression_statement "iVar4 = (int)local_20 << 4;" (assignment_expression "iVar4 = (int)local_20 << 4" identifier = (binary_expression "(int)local_20 << 4" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) }))) (expression_statement "sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid);" (call_expression "sqlite3NestedParse(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid)" identifier (argument_list "(pParse,\n                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                           ,*(undefined4 *)((int)&db->aDb->zDbSName + iVar4),"sqlite_master",\n                           data->zName,data->zName,pcVar2,pParse->regRowid)" ( identifier , (string_literal ""UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"" " string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression "*(undefined4 *)((int)&db->aDb->zDbSName + iVar4)" * (cast_expression "(undefined4 *)((int)&db->aDb->zDbSName + iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&db->aDb->zDbSName + iVar4)" ( (binary_expression "(int)&db->aDb->zDbSName + iVar4" (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) )))) , (string_literal ""sqlite_master"" " string_content ") , (field_expression "data->zName" identifier -> field_identifier) , (field_expression "data->zName" identifier -> field_identifier) , identifier , (field_expression "pParse->regRowid" identifier -> field_identifier) ))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n          sqlite3DbFreeNN(db,pcVar2);\n        }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sqlite3DbFreeNN(db,pcVar2);\n        }" { (expression_statement "sqlite3DbFreeNN(db,pcVar2);" (call_expression "sqlite3DbFreeNN(db,pcVar2)" identifier (argument_list "(db,pcVar2)" ( identifier , identifier ))) ;) })) (expression_statement "iDb = pParse->pVdbe;" (assignment_expression "iDb = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "p = iDb;" (assignment_expression "p = iDb" identifier = identifier) ;) (if_statement "if (iDb == (Vdbe *)0x0) {\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }" if (parenthesized_expression "(iDb == (Vdbe *)0x0)" ( (binary_expression "iDb == (Vdbe *)0x0" identifier == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          p = sqlite3GetVdbe(pParse);\n          iDb = pParse->pVdbe;\n        }" { (expression_statement "p = sqlite3GetVdbe(pParse);" (assignment_expression "p = sqlite3GetVdbe(pParse)" identifier = (call_expression "sqlite3GetVdbe(pParse)" identifier (argument_list "(pParse)" ( identifier )))) ;) (expression_statement "iDb = pParse->pVdbe;" (assignment_expression "iDb = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) })) (expression_statement "sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20);" (call_expression "sqlite3ChangeCookie((Parse *)pParse->db,(int)iDb,local_20)" identifier (argument_list "((Parse *)pParse->db,(int)iDb,local_20)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , (cast_expression "(int)iDb" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "sqlite3VdbeAddOp3(p,0x9e,0,0,0);" (call_expression "sqlite3VdbeAddOp3(p,0x9e,0,0,0)" identifier (argument_list "(p,0x9e,0,0,0)" ( identifier , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName);" (assignment_expression "pcVar2 = sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName)" identifier = (call_expression "sqlite3MPrintf(db,"name=\'%q\' AND type=\'table\'",data->zName)" identifier (argument_list "(db,"name=\'%q\' AND type=\'table\'",data->zName)" ( identifier , (string_literal ""name=\'%q\' AND type=\'table\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (field_expression "data->zName" identifier -> field_identifier) )))) ;) (expression_statement "sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2);" (call_expression "sqlite3VdbeAddParseSchemaOp(p,(int)local_20,pcVar2)" identifier (argument_list "(p,(int)local_20,pcVar2)" ( identifier , (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "iVar4 = pParse->nMem + 1;" (assignment_expression "iVar4 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = iVar4;" (assignment_expression "pParse->nMem = iVar4" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeLoadString(p,iVar4,data->zName);" (call_expression "sqlite3VdbeLoadString(p,iVar4,data->zName)" identifier (argument_list "(p,iVar4,data->zName)" ( identifier , identifier , (field_expression "data->zName" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0);" (call_expression "sqlite3VdbeAddOp3(p,0xa1,(int)local_20,iVar4,0)" identifier (argument_list "(p,0xa1,(int)local_20,iVar4,0)" ( identifier , number_literal , (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , number_literal ))) ;) }) (else_clause "else {\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }" else (compound_statement "{\n        pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);\n        if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }\n      }" { (expression_statement "pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data);" (assignment_expression "pvVar3 = sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data)" identifier = (call_expression "sqlite3HashInsert(&data->pSchema->tblHash,data->zName,data)" identifier (argument_list "(&data->pSchema->tblHash,data->zName,data)" ( (pointer_expression "&data->pSchema->tblHash" & (field_expression "data->pSchema->tblHash" (field_expression "data->pSchema" identifier -> field_identifier) -> field_identifier)) , (field_expression "data->zName" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (pvVar3 == (void *)0x0) {\n          pParse->pNewTable = (Table *)0x0;\n        }\n        else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }" if (parenthesized_expression "(pvVar3 == (void *)0x0)" ( (binary_expression "pvVar3 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pParse->pNewTable = (Table *)0x0;\n        }" { (expression_statement "pParse->pNewTable = (Table *)0x0;" (assignment_expression "pParse->pNewTable = (Table *)0x0" (field_expression "pParse->pNewTable" identifier -> field_identifier) = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }" else (compound_statement "{\n          uVar1._0_1_ = db->temp_store;\n          uVar1._1_1_ = db->mallocFailed;\n          uVar1._2_1_ = db->bBenignMalloc;\n          uVar1._3_1_ = db->dfltLockMode;\n          if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }\n        }" { (expression_statement "uVar1._0_1_ = db->temp_store;" (assignment_expression "uVar1._0_1_ = db->temp_store" (field_expression "uVar1._0_1_" identifier . field_identifier) = (field_expression "db->temp_store" identifier -> field_identifier)) ;) (expression_statement "uVar1._1_1_ = db->mallocFailed;" (assignment_expression "uVar1._1_1_ = db->mallocFailed" (field_expression "uVar1._1_1_" identifier . field_identifier) = (field_expression "db->mallocFailed" identifier -> field_identifier)) ;) (expression_statement "uVar1._2_1_ = db->bBenignMalloc;" (assignment_expression "uVar1._2_1_ = db->bBenignMalloc" (field_expression "uVar1._2_1_" identifier . field_identifier) = (field_expression "db->bBenignMalloc" identifier -> field_identifier)) ;) (expression_statement "uVar1._3_1_ = db->dfltLockMode;" (assignment_expression "uVar1._3_1_ = db->dfltLockMode" (field_expression "uVar1._3_1_" identifier . field_identifier) = (field_expression "db->dfltLockMode" identifier -> field_identifier)) ;) (if_statement "if ((uVar1 & 0xffff00) == 0) {\n            sqlite3OomFault(db);\n            return;\n          }" if (parenthesized_expression "((uVar1 & 0xffff00) == 0)" ( (binary_expression "(uVar1 & 0xffff00) == 0" (parenthesized_expression "(uVar1 & 0xffff00)" ( (binary_expression "uVar1 & 0xffff00" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            sqlite3OomFault(db);\n            return;\n          }" { (expression_statement "sqlite3OomFault(db);" (call_expression "sqlite3OomFault(db)" identifier (argument_list "(db)" ( identifier ))) ;) (return_statement "return;" return ;) })) }))) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_000e74c0(int *param_1,int *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  puVar1 = (undefined4 *)param_1[0x38];\n  if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_000e74c0(int *param_1,int *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  puVar1 = (undefined4 *)param_1[0x38];\n  if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000e74c0(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  puVar1 = (undefined4 *)param_1[0x38];\n  if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "puVar1 = (undefined4 *)param_1[0x38];" (assignment_expression "puVar1 = (undefined4 *)param_1[0x38]" identifier = (cast_expression "(undefined4 *)param_1[0x38]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x38]" identifier [ number_literal ]))) ;) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" ( (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }" { (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "FUN_00079ab0();" (call_expression "FUN_00079ab0()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[0x3c] = 0;" (assignment_expression "param_1[0x3c] = 0" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }" if (parenthesized_expression "(0 < (int)puVar1[0xe])" ( (binary_expression "0 < (int)puVar1[0xe]" number_literal < (cast_expression "(int)puVar1[0xe]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[0xe]" identifier [ number_literal ]))) )) (compound_statement "{\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }" { (if_statement "if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" if (parenthesized_expression "(*(char *)(iVar2 + 0xa1) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0xa1) == '\0'" (pointer_expression "*(char *)(iVar2 + 0xa1)" * (cast_expression "(char *)(iVar2 + 0xa1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xa1)" ( (binary_expression "iVar2 + 0xa1" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }" { (if_statement "if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }" { (expression_statement "param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];" (assignment_expression "param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1]" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) = (binary_expression "(*param_2 - param_1[0x2c]) + param_2[1]" (parenthesized_expression "(*param_2 - param_1[0x2c])" ( (binary_expression "*param_2 - param_1[0x2c]" (pointer_expression "*param_2" * identifier) - (subscript_expression "param_1[0x2c]" identifier [ number_literal ])) )) + (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);" (assignment_expression "iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" identifier = (call_expression "FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" identifier (argument_list "(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" ( identifier , (string_literal ""CREATE VIRTUAL TABLE %T"" " string_content ") , (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) ;) (if_statement "if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" if (parenthesized_expression "(puVar1[0x12] == 0)" ( (binary_expression "puVar1[0x12] == 0" (subscript_expression "puVar1[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          iVar4 = -16000000;\n        }" { (expression_statement "iVar4 = -16000000;" (assignment_expression "iVar4 = -16000000" identifier = number_literal) ;) }) (else_clause "else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" else (compound_statement "{\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" { (expression_statement "iVar4 = FUN_0004c580();" (assignment_expression "iVar4 = FUN_0004c580()" identifier = (call_expression "FUN_0004c580()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = iVar4 << 4;" (assignment_expression "iVar4 = iVar4 << 4" identifier = (binary_expression "iVar4 << 4" identifier << number_literal)) ;) }))) (expression_statement "FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);" (call_expression "FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16])" identifier (argument_list "(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16])" ( identifier , (string_literal ""UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"" " string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression "*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4)" * (cast_expression "(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar4)" ( (binary_expression "*(int *)(iVar2 + 0x10) + iVar4" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) + identifier) )))) , (string_literal ""sqlite_master"" " string_content ") , (pointer_expression "*puVar1" * identifier) , (pointer_expression "*puVar1" * identifier) , identifier , (subscript_expression "param_1[0x16]" identifier [ number_literal ]) ))) ;) (if_statement "if (iVar3 != 0) {\n          FUN_000428d0();\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_000428d0();\n        }" { (expression_statement "FUN_000428d0();" (call_expression "FUN_000428d0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_1[2] == 0) {\n          FUN_00065f90();\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_00065f90();\n        }" { (expression_statement "FUN_00065f90();" (call_expression "FUN_00065f90()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_00066610();" (call_expression "FUN_00066610()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00065e80(0,0);" (call_expression "FUN_00065e80(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);" (call_expression "FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1)" identifier (argument_list "(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1)" ( identifier , (string_literal ""name=\'%q\' AND type=\'table\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (pointer_expression "*puVar1" * identifier) ))) ;) (expression_statement "FUN_00066290();" (call_expression "FUN_00066290()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = param_1[0xb];" (assignment_expression "iVar2 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xb] = iVar2 + 1;" (assignment_expression "param_1[0xb] = iVar2 + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00066060();" (call_expression "FUN_00066060()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00065e80(iVar2 + 1,0);" (call_expression "FUN_00065e80(iVar2 + 1,0)" identifier (argument_list "(iVar2 + 1,0)" ( (binary_expression "iVar2 + 1" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" else (compound_statement "{\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" { (expression_statement "iVar3 = FUN_00046450();" (assignment_expression "iVar3 = FUN_00046450()" identifier = (call_expression "FUN_00046450()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          param_1[0x38] = 0;\n        }" { (expression_statement "param_1[0x38] = 0;" (assignment_expression "param_1[0x38] = 0" (subscript_expression "param_1[0x38]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" else (if_statement "if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" if (parenthesized_expression "((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0)" ( (binary_expression "(*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0" (parenthesized_expression "(*(uint *)(iVar2 + 0x4c) & 0xffff00)" ( (binary_expression "*(uint *)(iVar2 + 0x4c) & 0xffff00" (pointer_expression "*(uint *)(iVar2 + 0x4c)" * (cast_expression "(uint *)(iVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x4c)" ( (binary_expression "iVar2 + 0x4c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          FUN_00044490();\n          return;\n        }" { (expression_statement "FUN_00044490();" (call_expression "FUN_00044490()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))) }))) })) })) (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 (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (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 (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) - (subscript_expression IDENT [ LIT ])) )) + (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (binary_expression IDENT + LIT) )))) ;) (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 = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence string_content escape_sequence string_content ") , (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) )))) , (string_literal " string_content ") , (pointer_expression * IDENT) , (pointer_expression * IDENT) , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (pointer_expression * IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (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 ( ))) ;) (return_statement return ;) })))) }))) })) })) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_000e74c0(int *param_1,int *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  puVar1 = (undefined4 *)param_1[0x38];\n  if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000e74c0(int *param_1,int *param_2)" (identifier "FUN_000e74c0") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  puVar1 = (undefined4 *)param_1[0x38];\n  if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (expression_statement "puVar1 = (undefined4 *)param_1[0x38];" (assignment_expression "puVar1 = (undefined4 *)param_1[0x38]" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)param_1[0x38]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x38]" (identifier "param_1") ([ "[") (number_literal "0x38") (] "]")))) (; ";")) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar1 != (undefined4 *)0x0" (identifier "puVar1") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar2 = *param_1;\n    FUN_00079ab0();\n    param_1[0x3c] = 0;\n    if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" (identifier "iVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "FUN_00079ab0();" (call_expression "FUN_00079ab0()" (identifier "FUN_00079ab0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1[0x3c] = 0;" (assignment_expression "param_1[0x3c] = 0" (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < (int)puVar1[0xe]) {\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(0 < (int)puVar1[0xe])" (( "(") (binary_expression "0 < (int)puVar1[0xe]" (number_literal "0") (< "<") (cast_expression "(int)puVar1[0xe]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar1[0xe]" (identifier "puVar1") ([ "[") (number_literal "0xe") (] "]")))) () ")")) (compound_statement "{\n      if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }\n    }" ({ "{") (if_statement "if (*(char *)(iVar2 + 0xa1) == '\0') {\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }\n      else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 0xa1) == '\0')" (( "(") (binary_expression "*(char *)(iVar2 + 0xa1) == '\0'" (pointer_expression "*(char *)(iVar2 + 0xa1)" (* "*") (cast_expression "(char *)(iVar2 + 0xa1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xa1)" (( "(") (binary_expression "iVar2 + 0xa1" (identifier "iVar2") (+ "+") (number_literal "0xa1")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }\n        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);\n        if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }\n        FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);\n        if (iVar3 != 0) {\n          FUN_000428d0();\n        }\n        if (param_1[2] == 0) {\n          FUN_00065f90();\n        }\n        FUN_00066610();\n        FUN_00065e80(0,0);\n        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);\n        FUN_00066290();\n        iVar2 = param_1[0xb];\n        param_1[0xb] = iVar2 + 1;\n        FUN_00066060();\n        FUN_00065e80(iVar2 + 1,0);\n      }" ({ "{") (if_statement "if (param_2 != (int *)0x0) {\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }" (if "if") (parenthesized_expression "(param_2 != (int *)0x0)" (( "(") (binary_expression "param_2 != (int *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];\n        }" ({ "{") (expression_statement "param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];" (assignment_expression "param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1]" (subscript_expression "param_1[0x2d]" (identifier "param_1") ([ "[") (number_literal "0x2d") (] "]")) (= "=") (binary_expression "(*param_2 - param_1[0x2c]) + param_2[1]" (parenthesized_expression "(*param_2 - param_1[0x2c])" (( "(") (binary_expression "*param_2 - param_1[0x2c]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (- "-") (subscript_expression "param_1[0x2c]" (identifier "param_1") ([ "[") (number_literal "0x2c") (] "]"))) () ")")) (+ "+") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);" (assignment_expression "iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" (identifier "iVar3") (= "=") (call_expression "FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" (identifier "FUN_0007a820") (argument_list "(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c)" (( "(") (identifier "iVar2") (, ",") (string_literal ""CREATE VIRTUAL TABLE %T"" (" """) (string_content "CREATE VIRTUAL TABLE %T") (" """)) (, ",") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (; ";")) (if_statement "if (puVar1[0x12] == 0) {\n          iVar4 = -16000000;\n        }\n        else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" (if "if") (parenthesized_expression "(puVar1[0x12] == 0)" (( "(") (binary_expression "puVar1[0x12] == 0" (subscript_expression "puVar1[0x12]" (identifier "puVar1") ([ "[") (number_literal "0x12") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar4 = -16000000;\n        }" ({ "{") (expression_statement "iVar4 = -16000000;" (assignment_expression "iVar4 = -16000000" (identifier "iVar4") (= "=") (number_literal "-16000000")) (; ";")) (} "}")) (else_clause "else {\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" (else "else") (compound_statement "{\n          iVar4 = FUN_0004c580();\n          iVar4 = iVar4 << 4;\n        }" ({ "{") (expression_statement "iVar4 = FUN_0004c580();" (assignment_expression "iVar4 = FUN_0004c580()" (identifier "iVar4") (= "=") (call_expression "FUN_0004c580()" (identifier "FUN_0004c580") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = iVar4 << 4;" (assignment_expression "iVar4 = iVar4 << 4" (identifier "iVar4") (= "=") (binary_expression "iVar4 << 4" (identifier "iVar4") (<< "<<") (number_literal "4"))) (; ";")) (} "}")))) (expression_statement "FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16]);" (call_expression "FUN_000e3b60(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16])" (identifier "FUN_000e3b60") (argument_list "(param_1,\n                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"\n                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,\n                     *puVar1,iVar3,param_1[0x16])" (( "(") (identifier "param_1") (, ",") (string_literal ""UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"" (" """) (string_content "UPDATE %Q.%s SET type=") (escape_sequence "\'") (string_content "table") (escape_sequence "\'") (string_content ", name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d") (" """)) (, ",") (pointer_expression "*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar4)" (( "(") (binary_expression "*(int *)(iVar2 + 0x10) + iVar4" (pointer_expression "*(int *)(iVar2 + 0x10)" (* "*") (cast_expression "(int *)(iVar2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "iVar4")) () ")")))) (, ",") (string_literal ""sqlite_master"" (" """) (string_content "sqlite_master") (" """)) (, ",") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (, ",") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (, ",") (identifier "iVar3") (, ",") (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) () ")"))) (; ";")) (if_statement "if (iVar3 != 0) {\n          FUN_000428d0();\n        }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_000428d0();\n        }" ({ "{") (expression_statement "FUN_000428d0();" (call_expression "FUN_000428d0()" (identifier "FUN_000428d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_1[2] == 0) {\n          FUN_00065f90();\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_00065f90();\n        }" ({ "{") (expression_statement "FUN_00065f90();" (call_expression "FUN_00065f90()" (identifier "FUN_00065f90") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00066610();" (call_expression "FUN_00066610()" (identifier "FUN_00066610") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00065e80(0,0);" (call_expression "FUN_00065e80(0,0)" (identifier "FUN_00065e80") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);" (call_expression "FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1)" (identifier "FUN_0007a820") (argument_list "(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1)" (( "(") (identifier "iVar2") (, ",") (string_literal ""name=\'%q\' AND type=\'table\'"" (" """) (string_content "name=") (escape_sequence "\'") (string_content "%q") (escape_sequence "\'") (string_content " AND type=") (escape_sequence "\'") (string_content "table") (escape_sequence "\'") (" """)) (, ",") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) () ")"))) (; ";")) (expression_statement "FUN_00066290();" (call_expression "FUN_00066290()" (identifier "FUN_00066290") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = param_1[0xb];" (assignment_expression "iVar2 = param_1[0xb]" (identifier "iVar2") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "param_1[0xb] = iVar2 + 1;" (assignment_expression "param_1[0xb] = iVar2 + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00066060();" (call_expression "FUN_00066060()" (identifier "FUN_00066060") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00065e80(iVar2 + 1,0);" (call_expression "FUN_00065e80(iVar2 + 1,0)" (identifier "FUN_00065e80") (argument_list "(iVar2 + 1,0)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" (else "else") (compound_statement "{\n        iVar3 = FUN_00046450();\n        if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }\n      }" ({ "{") (expression_statement "iVar3 = FUN_00046450();" (assignment_expression "iVar3 = FUN_00046450()" (identifier "iVar3") (= "=") (call_expression "FUN_00046450()" (identifier "FUN_00046450") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n          param_1[0x38] = 0;\n        }\n        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          param_1[0x38] = 0;\n        }" ({ "{") (expression_statement "param_1[0x38] = 0;" (assignment_expression "param_1[0x38] = 0" (subscript_expression "param_1[0x38]" (identifier "param_1") ([ "[") (number_literal "0x38") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" (else "else") (if_statement "if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {\n          FUN_00044490();\n          return;\n        }" (if "if") (parenthesized_expression "((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0)" (( "(") (binary_expression "(*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0" (parenthesized_expression "(*(uint *)(iVar2 + 0x4c) & 0xffff00)" (( "(") (binary_expression "*(uint *)(iVar2 + 0x4c) & 0xffff00" (pointer_expression "*(uint *)(iVar2 + 0x4c)" (* "*") (cast_expression "(uint *)(iVar2 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x4c)" (( "(") (binary_expression "iVar2 + 0x4c" (identifier "iVar2") (+ "+") (number_literal "0x4c")) () ")")))) (& "&") (number_literal "0xffff00")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00044490();\n          return;\n        }" ({ "{") (expression_statement "FUN_00044490();" (call_expression "FUN_00044490()" (identifier "FUN_00044490") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))))) (} "}")))) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

void __regparm3 function_1(type_1 *pParse,type_2 *var_3)

{
  type_3 *var_1;
  type_4 *db;
  type_5 var_18;
  char *var_8;
  void *var_17;
  type_6 *p;
  int var_7;
  type_6 *var_10;
  type_1 *local_20;
  
  var_1 = pParse->pNewTable;
  if (var_1 != (type_3 *)0x0) {
    db = pParse->db;
    var_2(pParse);
    (pParse->sArg).z = (char *)0x0;
    if (0 < var_1->nModuleArg) {
      if ((db->init).busy == '\0') {
        if (var_3 != (type_2 *)0x0) {
          (pParse->sNameToken).n = (type_5)(var_3->z + (var_3->n - (int)(pParse->sNameToken).z));
        }
        var_8 = var_4(db,"CREATE VIRTUAL TABLE %T",&pParse->sNameToken);
        if (var_1->pSchema == (type_7 *)0x0) {
          var_7 = -16000000;
          local_20 = (type_1 *)0xfff0bdc0;
        }
        else {
          local_20 = (type_1 *)var_5(db,var_1->pSchema);
          var_7 = (int)local_20 << 4;
        }
        var_6(pParse,
                           "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"
                           ,*(type_8 *)((int)&db->aDb->zDbSName + var_7),"sqlite_master",
                           var_1->zName,var_1->zName,var_8,pParse->regRowid);
        if (var_8 != (char *)0x0) {
          var_9(db,var_8);
        }
        var_10 = pParse->pVdbe;
        p = var_10;
        if (var_10 == (type_6 *)0x0) {
          p = var_11(pParse);
          var_10 = pParse->pVdbe;
        }
        var_12((type_1 *)pParse->db,(int)var_10,local_20);
        var_13(p,0x9e,0,0,0);
        var_8 = var_4(db,"name=\'%q\' AND type=\'table\'",var_1->zName);
        var_14(p,(int)local_20,var_8);
        var_7 = pParse->nMem + 1;
        pParse->nMem = var_7;
        var_15(p,var_7,var_1->zName);
        var_13(p,0xa1,(int)local_20,var_7,0);
      }
      else {
        var_17 = var_16(&var_1->pSchema->tblHash,var_1->zName,var_1);
        if (var_17 == (void *)0x0) {
          pParse->pNewTable = (type_3 *)0x0;
        }
        else {
          var_18._0_1_ = db->temp_store;
          var_18._1_1_ = db->mallocFailed;
          var_18._2_1_ = db->bBenignMalloc;
          var_18._3_1_ = db->dfltLockMode;
          if ((var_18 & 0xffff00) == 0) {
            var_19(db);
            return;
          }
        }
      }
    }
  }
  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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (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 (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)) (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))))) (string_literal (string_content)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (identifier) (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (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))) (return_statement)))))))))))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

void __regparm3 MASKED(int *param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  puVar1 = (undefined4 *)param_1[0x38];
  if (puVar1 != (undefined4 *)0x0) {
    iVar2 = *param_1;
    FUN_00079ab0();
    param_1[0x3c] = 0;
    if (0 < (int)puVar1[0xe]) {
      if (*(char *)(iVar2 + 0xa1) == '\0') {
        if (param_2 != (int *)0x0) {
          param_1[0x2d] = (*param_2 - param_1[0x2c]) + param_2[1];
        }
        iVar3 = FUN_0007a820(iVar2,"CREATE VIRTUAL TABLE %T",param_1 + 0x2c);
        if (puVar1[0x12] == 0) {
          iVar4 = -16000000;
        }
        else {
          iVar4 = FUN_0004c580();
          iVar4 = iVar4 << 4;
        }
        FUN_000e3b60(param_1,
                     "UPDATE %Q.%s SET type=\'table\', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q WHERE rowid=#%d"
                     ,*(undefined4 *)(*(int *)(iVar2 + 0x10) + iVar4),"sqlite_master",*puVar1,
                     *puVar1,iVar3,param_1[0x16]);
        if (iVar3 != 0) {
          FUN_000428d0();
        }
        if (param_1[2] == 0) {
          FUN_00065f90();
        }
        FUN_00066610();
        FUN_00065e80(0,0);
        FUN_0007a820(iVar2,"name=\'%q\' AND type=\'table\'",*puVar1);
        FUN_00066290();
        iVar2 = param_1[0xb];
        param_1[0xb] = iVar2 + 1;
        FUN_00066060();
        FUN_00065e80(iVar2 + 1,0);
      }
      else {
        iVar3 = FUN_00046450();
        if (iVar3 == 0) {
          param_1[0x38] = 0;
        }
        else if ((*(uint *)(iVar2 + 0x4c) & 0xffff00) == 0) {
          FUN_00044490();
          return;
        }
      }
    }
  }
  return;
}

